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

发布于 2024-11-01 15:49:20 字数 904 浏览 5 评论 0原文

我有一个对象列表(成对的,其中一个 IsApproved 为 true,另一个 IsApproved 为 false,即:

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; }
}

关于如何做到这一点有什么建议吗?非常感谢。

I have a list of objects (in pair, in one, IsApproved is true, and the other, IsApproved is false, i.e.:

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

The list would be something like:

1 123ABC SomeName True

2 123ABC SomeElse False

3 321CBA Name2 True

4 321CBA Name3 False

5 987ASD NameName True

6 987ASD TestTest False

I would need to be able to group them by MatchId, then separate them so that I have a new list like this:

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

public class PairedObject
{
    public Object IsApproved { get; set; }
    public Object NotApproved { get; set; }
}

Any suggestion on how to do this? Thank you very much.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

从此见与不见 2024-11-08 15:49:20
list.GroupBy(o => o.MatchId)
    .Select(g => new PairedObject
                     {
                         IsApproved = g.First(o => o.IsApproved),
                         NotApproved = g.First(o => !o.IsApproved)
                     });
list.GroupBy(o => o.MatchId)
    .Select(g => new PairedObject
                     {
                         IsApproved = g.First(o => o.IsApproved),
                         NotApproved = g.First(o => !o.IsApproved)
                     });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文