[英]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
,其中具有該序列號的所有對象都已Approved
為true
。
多個對象可以具有相同的序列號,並且可能不使用某些序列號(可能有序列號為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.