gpt4 book ai didi

c# - 在 lambda 表达式中的另一个对象列表中获取一个对象列表

转载 作者:太空宇宙 更新时间:2023-11-03 19:55:49 38 4
gpt4 key购买 nike

我有以下类(class):

public class ClassA(){
public int Id { get; set; }

public ICollection<ClassB> ClassBs{ get; set; }
}

public class ClassB(){
public int Id { get; set; }
public int ClassAId{ get; set; }
public int ClassCId{ get; set; }

public virtual ClassA ClassA{ get; set; }
public virtual ClassC ClassC{ get; set; }
}

public class ClassC(){
public int Id { get; set; }
public string Name{ get; set; }

public ICollection<ClassB> ClassBs{ get; set; }
}

现在,我有一个来自用户选择的 ClassC 对象列表。

假设用户选择了 ID 为 1 和 3 的 ClassC。我需要返回所有符合条件的 ClassA 对象的列表。

最佳答案

当您有一个集合的集合,并且您希望在内部返回集合的元素时,一般规则是在进行进一步处理之前使用 SelectMany。在您的情况下,这将如下所示:

var res = collectionOfCs
.Where(cItem => ... /* Condition on ClassC */)
.SelectMany(cItem => cItem.ClassBs.Select(bItem => bItem.ClassA))
.Where(aItem => ... /* Condition on ClassA */)

您可以将 ClassA 的选择与 SelectMany 分开,但查询的整体结构将保持不变:

var res = collectionOfCs
.Where(cItem => ... /* Condition on ClassC */)
.SelectMany(cItem => cItem.ClassBs)
.Select(bItem => bItem.ClassA) // Moved from SelectMany
.Where(aItem => ... /* Condition on ClassA */)

关于c# - 在 lambda 表达式中的另一个对象列表中获取一个对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33694564/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com