我有一个类型的对象,A它由一个类型为的对象列表组成B:
class A { list<B> Alist;}
class B { string C; string D;}
Run Code Online (Sandbox Code Playgroud)
在我的程序中,我有一个A对象列表:
list<A> listOfA = computeAList();
Run Code Online (Sandbox Code Playgroud)
我想选择C该列表中的所有字符串.我希望以下陈述能给我我想要的结果; 它返回一个包含C's 的列表列表:
var query = from objectA in listOfA
select objectA.Alist.FindAll(x => x.C.Length > 0).C;
Run Code Online (Sandbox Code Playgroud)
有没有办法获得所有的单一列表C?
Jon*_*eet 52
ybo的答案也是我的第一个回答.与此等价的查询表达式是:
var query = from a in computeAList()
from b in a.Alist
select b.C;
Run Code Online (Sandbox Code Playgroud)
为了完整起见,此主题中的其他答案是同一主题的变体.
从ybo(完全相同的查询,表示为点表示法):
var query = listOfA.SelectMany(a => a.Alist, (a, b) => b.C);
Run Code Online (Sandbox Code Playgroud)
来自Ray Hayes(包括Where子句;我稍微重新格式化):
var query = listOfA.SelectMany(a => a.AList, (a, b) => b.C)
.Where(c => c.Length > 0);
Run Code Online (Sandbox Code Playgroud)
Ray*_*yes 16
我也会有类似的答案,我唯一的修改是添加where子句以避免空字符串(其中C为空):
listOfA.SelectMany( a => a.AList, (a, b) => b.C ).Where( c => c.Length > 0 );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22570 次 |
| 最近记录: |