我想在值上做一个GroupBy并传递另一个值来在Key中使用,如果我有
class foo {
public locationID { get; set; }
public roleID { get; set; }
}
我做的事情会返回一个foo列表。
fooList.GroupBy(g => new { LocationID = g.locationID }).ToList();
上面是GroupBy并将LocationID放入新列表的Key中。
fooList.GroupBy(g => new { LocationID = g.locationID, RoleID = g.roleID }).ToList();
以上工作只要将RoleId放入Key中,然后GroupBy使用LocationID& RoleID用于执行Group By的逻辑部分。
如果我只想按LocationId进行分组,但是将其他数据,RoleID放入密钥怎么办?而且我不想在GroupBy逻辑中包含RoleId?
答案 0 :(得分:1)
您无法修改key
并添加其他数据,您可以计划将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);
}
答案 1 :(得分:1)
一个组只能有一个密钥。如果每个组中的元素具有不同的roleID
值,则需要在密钥中保留多个roleID
。如果每个组中的元素都具有相同的roleID
值,则按此分组也不会做任何事情并且无害。