[英]C# object sorting by group, using linq
我有按特定屬性分組的對象列表。 我需要根據其他屬性對該列表進行排序,但始終需要保留分組。 因此,例如,如果列表類似於:
{ 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()的各種組合,但是我似乎無法獲得所需的東西。
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);
您之前/之后的測試樣本不匹配,但這應該可以解決您的問題。
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.