gpt4 book ai didi

c# - LINQ 方法如何使用父类中的附加列来选择Many

转载 作者:行者123 更新时间:2023-12-01 23:39:46 25 4
gpt4 key购买 nike

我有课:

public class Parent
{
public int ParentID { get; set; }
public string ParentName { get; set; }
public List<Child> Childs { get; set; }
}

public class Child
{
public int ChildID { get; set; }
public string ChildName { get; set; }
}

使用 Parent 对象,以下是我获取所有 Childs 值的方法。

Parent obj = GetParent();
PrintExcel(obj.SelectMany(sm => sm.Childs);

但我还想在选择命令中包含 ParentName 值,如何实现?

通过 SQL 查询,我可以做到这一点

SELECT
p.ParentName,
c.ChildName
FROM
Parent p
INNER JOIN Child c ON
p.ParentID = c.ParentID

最佳答案

您的 LINQ 示例有缺陷。假设您有一个序列 Parent (即 IEnumerable<Parent>IQueryable<Parent> )称为 parents ,您可以访问 SelectMany 内的父级至少有两种方式:

(A) 使用 Select里面SelectMany :

parents.SelectMany(p => p.Childs.Select(c => new { p.ParentName, c.ChildName }))

(B) 使用SelectMany overload它允许您传递结果选择器:

parents.SelectMany(p => p.Childs, (p, c) => new { p.ParentName, c.ChildName })

当然,您可以简单地使用查询语法并让编译器为您确定正确的方法:

(from p in parents from c in p.Childs select new { p.ParentName, c.ChildName })

关于c# - LINQ 方法如何使用父类中的附加列来选择Many,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38071213/

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