加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Linq:有没有办法搜索符合条件的值的对象列表列表?

发布时间:2020-12-16 00:06:52 所属栏目:百科 来源:网络整理
导读:我有3种类型的对象,TypeA,TypeB,TypeC. TypeA有一个TypeB列表,TypeB有一个TypeC列表,而TypeC有一些我想跟踪的变量 Class TypeA{ ListTypeB MyListOfTypeB; //...}Class TypeB{ ListTypeC MyListOfTypeC; //...}Class TypeC{ int SomeInteger; //...} 给定列
我有3种类型的对象,TypeA,TypeB,TypeC. TypeA有一个TypeB列表,TypeB有一个TypeC列表,而TypeC有一些我想跟踪的变量

Class TypeA
{
  List<TypeB> MyListOfTypeB;
  //...
}

Class TypeB
{
  List<TypeC> MyListOfTypeC;
  //...
}

Class TypeC
{
  int SomeInteger;
  //...
}

给定列表< TypeA> MyListOfTypeA,我想寻找满足特定条件的所有TypeC对象,例如,SomeInteger> 100.除了为/ foreach循环嵌套之外,Linq的方法是什么?

解决方法

var MyListOfTypeA = new List<TypeA>();
// ...
var cItems = 
    from a in MyListOfTypeA
    from b in a.MyListOfTypeB
    from c in a.MyListOfTypeC
    where c.SomeInteger > 100
    select c;

以上相当于调用SelectMany LINQ函数,但在我看来它更清晰,更容易阅读.

使用LINQ函数(正如Dmitry已经建议的那样,但有一些修改):

var cItems = 
    MyListOfTypeA.SelectMany( a => a.MyListOfTypeB )
                 .SelectMany( b => b.MyListOfTypeC )
                 .Where( c => c.SomeValue > 200 );

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读