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

Linq:长列表中的列表列表

如何解决《Linq:长列表中的列表列表》经验,为你挑选了2个好方法。

我有一个类型的对象,A它由一个类型为的对象列表组成B:

class A { list Alist;}
class B { string C; string D;}

在我的程序中,我有一个A对象列表:

list listOfA = computeAList();

我想选择C该列表中的所有字符串.我希望以下陈述能给我我想要的结果; 它返回一个包含C's 的列表列表:

var query = from objectA in listOfA
            select objectA.Alist.FindAll(x => x.C.Length > 0).C;

有没有办法获得所有的单一列表C



1> Jon Skeet..:

ybo的答案也是我的第一个回答.与此等价的查询表达式是:

var query = from a in computeAList()
            from b in a.Alist
            select b.C;

为了完整起见,此主题中的其他答案是同一主题的变体.

从ybo(完全相同的查询,表示为点表示法):

var query = listOfA.SelectMany(a => a.Alist, (a, b) => b.C);

来自Ray Hayes(包括Where子句;我稍微重新格式化):

var query = listOfA.SelectMany(a => a.AList, (a, b) => b.C)
                   .Where(c => c.Length > 0);



2> Ray Hayes..:

我也会有类似的答案,我唯一的修改是添加where子句以避免空字符串(其中C为空):

listOfA.SelectMany( a => a.AList, (a, b) => b.C ).Where( c => c.Length > 0 );

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