4

我正在努力解决以下问题。

    public class Competition
{
    public int Id { get; set; }
    public string Name { get; set; }
    public IList<ResultInfo> ResultInfos { get; set; }
    public IList<Event> ChildEvents { get; set; }
}


public class ResultInfo
{
    public int Id { get; set;}
    public string ResultInfoName { get; set;}
    public int Season { get; set; }
}

public class Event
{
    public int Id { get; set; }
    public string EventName { get; set; }
    public IList<ResultInfo> ResultInfos { get; set; } 
}

我正在尝试如下查询,以尝试从比赛和活动中获取“2013”​​赛季的结果信息。如果有人知道,请指教。

if (year.HasValue)
{
   model = model.Where(x => x. ??           
}
4

2 回答 2

1

你可以做:

var competitions = new Competition(); // Populated competition class

var results = (from c in competitions
               from e in c.ChildEvents
               from ri in e.ResultInfos
               where ri.Season == 2013).ToList();

目前还不清楚为什么你需要一个额外的where,但你可以扩展它并有另一个子句,例如

where ri.Season == 2013 && EventName == "Event"

正如@von.v 所指出的,您可以ResultInfos通过 Competition 类直接访问,因此您可以通过以下方式简化它:

   var results = (from c in competitions
                  from ri in c.ResultInfos
                  where ri.Season == 2013).ToList();
于 2013-04-23T10:22:37.733 回答
0

我不undersant你想要什么?如果您希望比赛有 2013 年的结果信息和 2013 年的结果信息,您可以这样做:

model.Where(c => c.ChildEvents
                  .SelectMany(ce => ce.ResultInfos)
                  .Where(ri => ri.Season == 2013).Count() > 0
            &&
            c.ResultInfos.Where(ri => ri.Season == 2013).Count() > 0)
     .ToList();

但我不确定我是否理解你需要什么

于 2013-04-23T11:11:27.377 回答