我使用GroupBy对对象进行分组,例如:
var categories=
tovRDb.MyObjects.AsEnumerable().Where(t => myHashSet.Contains(t.Id))
.GroupBy(t => t.Specialization, t => t,
(key, g) => new {Name = key.Name, CategoryItems = g.ToList()})
.OrderBy(t => string.IsNullOrEmpty(t.Name))
.ThenBy(t => t.Name)
.ToList();效果很好。
但是现在我想对特定化为ICollection<>的对象进行分组。
例如:
MyObject1: "Berlay's Meat"
Specializations{Chicken, Pork, Beef}
MyObject2: "Wonday's Chickery"
Specializations{Chicken}
MyObject3: "Rooki's Meat"
Specializations{Chicken, Pork}以及小组之后:
Pork{MyObject1: "Berlay's Meat",MyObject3: "Rooki's Meat"}
Beef{MyObject1: "Berlay's Meat"}
Chicken{MyObject1: "Berlay's Meat",MyObject2: "Wonday's Chickery", MyObject3: "Rooki's Meat"}有什么建议吗?
发布于 2015-05-15 07:46:57
使用categories作为:
var categories = tovRDb.MyObjects.AsEnumerable().Where(t => myHashSet.Contains(t.Id));
var catsGrouped = categories.SelectMany(
x => x.Specializations, // Specializations is an IEnumerable<Specialization>
(x, y) => new
{
Category = x,
Specialization = y,
}).GroupBy(x => x.Specialization, x => x.Category)
.ToArray();我使用SelectMany来“乘”每一个类别,用于其专门化..。然后我用Specialization对结果进行了重组。结果是一个IGrouping<Specialization, MyObject>[]
https://stackoverflow.com/questions/30254042
复制相似问题