我有一个按特定属性分组的对象列表。我需要根据其他属性对此列表进行排序,但它始终需要保留分组。因此,例如,如果列表类似于:
{ id=1, partNumber = 100 }
{ id=2, partNumber = 500 }
{ id=2, partNumber = 300 }
{ id=2, partNumber = 600 }
{ id=3, partNumber = 550 }
{ id=3, partNumber = 990 }
{ id=4, partNumber = 200 }
{ id=5, partNumber = 300 }则按零件号升序排序后的结果为:
{ id=1, partNumber = 100 }
{ id=4, partNumber = 200 }
{ id=5, partNumber = 300 }
{ id=2, partNumber = 400 }
{ id=2, partNumber = 500 }
{ id=2, partNumber = 600 }
{ id=3, partNumber = 550 }
{ id=3, partNumber = 990 }它按每个组中的最小PartNumber排序(如果是降序排序,则按最大值排序),但必须保持按ID分组。我尝试了.OrderBy()和.GroupBy()的各种组合,但似乎无法获得所需的内容。
发布于 2011-08-30 01:19:39
var orderedList =
list.GroupBy(i => i.id)
.OrderBy(g => g.Min(i => i.partNumber))
// and if you want to flatten the groupings back out
.SelectMany(g => g);发布于 2011-08-30 01:32:33
您之前/之后的测试样本不匹配,但这应该可以解决您的问题。
var query = from a in list
orderby a.partNumber
group a by a.id into ag
orderby ag.Min(x => x.partNumber)
from a in ag
select a;https://stackoverflow.com/questions/7233436
复制相似问题