说我有:
struct myStruct
{
int index;
}
如果我有List<List<List<myStruct>>> lists
有没有办法
1)获取具有myStruct.index = 0
2)确保订购到位? (例如,lists[0][j][k]
将始终位于结果中的lists[1][j][k]
之前。
我尝试使用类似lists.FindAll(x=>...)
格式的内容,但我无法弄清楚如何为大于1D的列表表达它,而且我不确定结果排序。
答案 0 :(得分:3)
你可以使用SelectMany
并将列表展平
lists.SelectMany(x=>x.SelectMany(s=>s))
.Where(x=>x.index ==0);
答案 1 :(得分:0)
试试这个
UIView *myView;
self.window.rootViewController = myView
myView= self.viewController;
[self.window makeKeyAndVisible];
答案 2 :(得分:0)
我从未发现SelectMany
易于阅读。
(from l1 in lists
from l2 in l1
from x in l2
where x.index == 0).ToList();
答案 3 :(得分:0)
您最好的选择是使用SelectMany将其展平,然后使用简单的Where子句;
list3d
.SelectMany(x => x)
.SelectMany(y => y)
.SelectMany(z => z)
.Where(item => <your condition here>);
SelectMany
采用一个序列(如List<List<List<T>>>
),将每个序列转换为序列,然后将所有序列展平为一个大序列。因此,您希望将3d列表展平为单个序列,然后将其视为一个简单的过滤器。