当前位置:  开发笔记 > 编程语言 > 正文

在LINQ中查询子集合

如何解决《在LINQ中查询子集合》经验,为你挑选了2个好方法。

我有一组叫做的对象Gigs.

每个Gig都有一个Acts集合.

使用Linq我想查询我的演出集合以获取所有演出,其中例如具有id为7的动作.

act.id = 7;

所以我开始写作......

return from gig in qry
       where gig.Acts //not sure how to do this bit
       select gig;

但是我不确定你是如何为名为actions的子集合设置条件的.

有任何想法吗?



1> Quintin Robi..:

基本上与Mike_G相同,只是更详细的语法和使用相等.

var myCollection = from gig in qry
                   where gig.Acts.Any(act => act.ID == 7)
                   select gig;

只是编辑带来评论答案:

实际上,查询是针对Act对象上的成员(Artist)上的ID,该ID可以为null.

新查询:

var myCollection = from gig in qry
                   where gig.Acts.Any(act => (null != act.Artist) && (act.Artist.ID == 7))
                   select gig;



2> Mike_G..:
var x = gigs.Where(g=>g.Acts.Select(a=>a.ID).Contains(7));

这两个查询也返回相同:

var x = gigs.Where(g=>g.Acts.Count(a=>a.ID == 7) > 0);

var x = gigs.Where(g=>g.Acts.FirstOrDefault(a=>a.ID == 7) != null);

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有