我有一个linq创建一个对象列表(现在是9个元素),例如:
Object 1: Title: Title1
Value: Marco
Object 2: Title: Title2
Value: Paolo
Object 3: Title: Title3
Value: Giovanni
Object 4: Title: Title1
Value: Edoardo
Object 5: Title: Title2
Value: Chris
Object 6: Title: Title3
Value: John
Object 7: Title: Title1
Value: Manuel
Object 8: Title: Title2
Value: Lorenz
Object 9: Title: Title3
Value: Ernest
而不是这个9对象,我只想返回3个Object(按标题分组),每个对象的值为每个分组上每个值的联合列表。所以结果应该是:
Object 1: Title: Title1
Value[]: Marco, Edoardo, Manuel
Object 2: Title: Title2
Value[]: Paolo, Chris, Lorenz
Object 3: Title: Title3
Value[]: Giovanni, John, Ernest
Linq可以吗?或者我需要迭代我的列表并手动管理它?
P.S。请注意,这只是一个例子!在我的场景中,对于每个对象,我有比Title和Value更多的元素,例如10元素。
答案 0 :(得分:4)
var query = objects.GroupBy(o => o.Title)
.Select(g => new
{
Title = g.Key,
Value = g.Select(x => x.Value).ToArray()
});
或使用查询语法:
var query = from o in objects
group o by o.Title into g
select new
{
Title = g.Key,
Value = g.Select(x => x.Value).ToArray()
});
UPDATE 考虑使用简单分组 - 这将返回按标题分组的对象
var query = objects.GroupBy(o => o.Title);