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

时间:2011-04-14 23:06:47

标签: c# .net linq group-by

我有一个对象列表(成对,一个,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; }
}

有关如何执行此操作的任何建议吗?非常感谢你。

1 个答案:

答案 0 :(得分:4)

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