我有一节课:
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; }
}
Run Code Online (Sandbox Code Playgroud)
有了Parent对象,这就是我获得所有Childs价值的方式.
Parent obj = GetParent();
PrintExcel(obj.SelectMany(sm => sm.Childs);
Run Code Online (Sandbox Code Playgroud)
但我也想ParentName在select命令中包含值,如何实现呢?
使用SQL查询,我可以这样做
SELECT
p.ParentName,
c.ChildName
FROM
Parent p
INNER JOIN Child c ON
p.ParentID = c.ParentID
Run Code Online (Sandbox Code Playgroud)
Iva*_*oev 13
您的LINQ示例存在缺陷.假设你有一个序列的Parent(即IEnumerable<Parent>或IQueryable<Parent>调用)parents,您可以访问内部的家长SelectMany至少在两个方面:
(A)Select在内部使用SelectMany:
parents.SelectMany(p => p.Childs.Select(c => new { p.ParentName, c.ChildName }))
Run Code Online (Sandbox Code Playgroud)
(B)使用允许您传递结果选择器的SelectMany 重载:
parents.SelectMany(p => p.Childs, (p, c) => new { p.ParentName, c.ChildName })
Run Code Online (Sandbox Code Playgroud)
当然,您可以简单地使用查询语法,让编译器为您确定正确的方法:
(from p in parents from c in p.Childs select new { p.ParentName, c.ChildName })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1550 次 |
| 最近记录: |