【发布时间】:2018-03-29 11:27:16
【问题描述】:
我在格式化这个问题的标题时遇到了困难。但我认为举个例子会让事情更清楚。
我有以下列表,其中包含可变数量的其他列表,其中包含可变数量的“a”对象。
[
[ a, a, a, a],
[ a, a, a],
[ a, a, a],
[ a, a, a, a],
[ a, a, a],
[ a, a, a, a],
[ a, a, a]
]
其中'a'代表类的一个实例:
class a {
public int Number { get; set; }
public SomeClass SomeClass { get; set; }
}
基本上我想要的是在 Number 等于 1 时创建一个 SomeClass 对象列表。
我已经使用 foreach 循环实现了这一点,但我想使用 Linq 实现这一点。
使用 foreach 循环的伪代码:
List<SomeObject> someObjectsList = new List<SomeObject>();
// list is the list which contains lists of 'a' objects described above in the question
foreach (var listOfAObjects in list)
{
var listThatCompliesWithWhereClause = listOfAObjects.Where(x => x.Number == 1);
foreach (var a in listThatCompliesWithWhereClause)
{
someObjectsList.Add(a.SomeObject);
}
}
// someObjectsList is now filled with what I need
我如何用 Linq 解决这个问题?
另外,也欢迎提出更好的标题。
【问题讨论】:
-
只是为了检查逻辑是将所有
a扁平化到一个列表中,过滤掉带有Number1 的列表,然后从这些对象中返回SomeClass? -
您的循环似乎有误,您访问了两次
list而不是listOfAObjects