簡體   English   中英

C# linq 如何按組中的對象過濾組列表

[英]C# linq how to filter a list of groups by the objects in the group

我有一個MyObject的列表

class MyObject 
{
    int Id { get; set; }
    int SequenceNumber { get; set; }
    bool Approved { get; set;}
}

我需要獲取最大SequenceNumber ,其中具有該序列號的所有對象都已Approvedtrue

多個對象可以具有相同的序列號,並且可能不使用某些序列號(可能有序列號為1, 2, 4的 object 和沒有具有3的對象)

我的想法是使用

Objects.GroupBy(f => f.SequenceNUmber).ToList();

但我不知道如何過濾我從中獲得的組列表。

是否有另一種方法可以獲得所有對象都被批准的最高序列號,或者我只需要以某種方式過濾組列表?

嗯,有

IEnumerable<MyObject> Objects = ...

我們可以將其查詢為

var result = Objects
  .GroupBy(item => item.SequenceNumber)
  .Where(group => group.All(item => item.Approved))
  .Max(group => group.Key);

如果有可能,我們沒有任何SequenceNumber ,其中所有相應的對象都已Approved ,並且我們希望在這種情況下返回一些默認值(例如-1 ):

var result = source
  .GroupBy(item => item.SequenceNumber)
  .Where(group => group.All(item => item.Approved))
  .Select(group => group.Key)
  .DefaultIfEmpty(-1)
  .Max();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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