c# – 带有两个where子句的Linq语句

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

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. ??           
}

解决方法

你可以做:

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 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();

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...