簡體   English   中英

使用linq按組對C#對象進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM