我有一节课:
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 次 |
最近记录: |