我正在努力解决以下问题。
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”。如果有人知道,plesae建议。
if (year.HasValue)
{
model = model.Where(x => x. ??
}
答案 0 :(得分: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所指出的那样,您可以通过Competition类直接访问ResultInfos
,因此您可以通过以下方式简化它:
var results = (from c in competitions
from ri in c.ResultInfos
where ri.Season == 2013).ToList();
答案 1 :(得分:0)
我不想要你想要什么?如果您想在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();
但我不确定我是否欠你需要的东西