Jor*_*rdi 3 .net c# linq group-by
我有一个Parent包含Child对象集合的类,其中Child有两个属性:Key和Value:
class Parent
{
public IEnumerable<Child> Children { get; set; }
}
class Child
{
public String Key { get; set; }
public String Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我需要List<Parent>按其分组 a Child.Value。
例子:
IEnumerable<Parent> parents = new List<Parent>()
{
new Parent()
{
Children = new List<Child>()
{
new Child() { Key = "key1", Value = "v1" },
new Child() { Key = "key1", Value = "v2" }
}
},
new Parent()
{
Children = new List<Child>()
{
new Child() { Key = "key1", Value = "v2" },
new Child() { Key = "key1", Value = "v3" }
}
}
};
Run Code Online (Sandbox Code Playgroud)
有什么办法吗?
这对你有用吗?
var query =
from p in parents
from c in p.Children
group p by c.Value;
Run Code Online (Sandbox Code Playgroud)
这给出:
你也可以使用这个:
var query =
parents
.SelectMany(p => p.Children, (p, c) => new { p, c })
.GroupBy(x => x.c.Value, x => x.p);
Run Code Online (Sandbox Code Playgroud)
这是一个即使Children是null或空枚举也能工作的查询:
var query =
parents
.SelectMany(p =>
(p.Children ?? new Child[] { })
.DefaultIfEmpty(new Child() { Value = null }),
(p, c) => new { p, c })
.GroupBy(x => x.c.Value, x => x.p);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
959 次 |
| 最近记录: |