LINQ - GroupBy配对对象的一个键,然后将分组对象分成2个对象的列表

本文关键字:对象 然后 2个 列表 GroupBy LINQ 一个 | 更新日期: 2023-09-27 17:50:18

我有一个对象列表(成对,其中一个,IsApproved为真,另一个,IsApproved为假,即:

public class Object
{
    public int Id { get; set; }
    public int MatchId { get; set; }
    public string Name { get; set; }
    public bool IsApproved { get; set; }
}

列表应该是这样的:

1 123ABC SomeName True

2 123ABC SomeElse False

3 321CBA Name2 True

4 321CBA Name3 False

5 987ASD NameName True

6 987ASD TestTest False

我需要能够按MatchId对它们进行分组,然后将它们分开,这样我就有了一个像这样的新列表:

public class Program
{
    public List<PairedObject> PairedObjects { get; set; }
}
public class PairedObject
{
    public Object IsApproved { get; set; }
    public Object NotApproved { get; set; }
}

有什么建议吗?非常感谢。

LINQ - GroupBy配对对象的一个键,然后将分组对象分成2个对象的列表

list.GroupBy(o => o.MatchId)
    .Select(g => new PairedObject
                     {
                         IsApproved = g.First(o => o.IsApproved),
                         NotApproved = g.First(o => !o.IsApproved)
                     });
相关文章: