我在格式化这个问题的标题时遇到了困难。但我认为举个例子会让事情更清楚。

我有以下列表,其中包含可变数量的其他列表,其中包含可变数量的“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; }
}

基本上我想要的是当 SomeClass 等于 1 时创建一个 Number 对象列表。

我已经使用 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 解决这个问题?

此外,也欢迎对更好的标题提出建议。

最佳答案

尝试

list.SelectMany(it => it).Where(it => it.Number == 1).Select(it => it.SomeClass)

关于c# - 使用 Linq 从包含列表的列表生成列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49554905/

10-17 02:33