C#GroupBy将值传递给键,但不将其包含在GroupBy逻辑中
我想对一个值进行分组,并传递另一个值,以便在键中使用(如果有)C#GroupBy将值传递给键,但不将其包含在GroupBy逻辑中,c#,lambda,C#,Lambda,我想对一个值进行分组,并传递另一个值,以便在键中使用(如果有) class foo { public locationID { get; set; } public roleID { get; set; } } 我做了一些返回foo列表的事情 fooList.GroupBy(g => new { LocationID = g.locationID }).ToList(); 上面将按GroupBy并将LocationID放入新列表的键中 fooList.GroupBy(g
class foo {
public locationID { get; set; }
public roleID { get; set; }
}
我做了一些返回foo列表的事情
fooList.GroupBy(g => new { LocationID = g.locationID }).ToList();
上面将按GroupBy并将LocationID放入新列表的键中
fooList.GroupBy(g => new { LocationID = g.locationID, RoleID = g.roleID }).ToList();
上面的工作原理是将RoleId放入键中,但是GroupBy使用LocationID&RoleId来完成GroupBy的逻辑部分
如果我只想按LocationId分组,但将其他数据RoleID放入密钥中,该怎么办?我不想在GroupBy逻辑中包含RoleId 您不能修改
键
并添加其他数据,您可以将GroupBy
结果投影到匿名类型,您可以从组的第一个元素中附加roleID
,如:
var query = fooList.GroupBy(r => r.locationID)
.Select(grp => new
{
Key = grp.Key + grp.First().roleID
});
或者你可以:
var query = fooList.GroupBy(r => r.locationID)
.Select(grp => new
{
Key = grp.Key,
RoleId = grp.First().roleID,
});
以后您可以使用:
foreach (var item in query)
{
Console.WriteLine("Key: {0}, RoleID: {1}", item.Key, item.RoleId);
}
一个组只能有一个键。如果每个组中的元素具有不同的
roleID
值,则需要多个roleID
才能保留在键中。如果每个组中的元素都具有相同的roleID
值,那么按该值分组也不会产生任何效果,而且是无害的。你说得对,我越想,我的问题就越没有意义。如果它们是一对一的关系,那么分组就起作用了。否则,使用结果中的值会起作用。谢谢