将同类对象分组 C#

发布于 2024-10-24 23:28:44 字数 273 浏览 2 评论 0原文

我有一个对象列表,这些对象通过其属性之一(例如“ID”)进行锁定或唯一标识。我需要对具有不同 ID 的所有对象进行分组,这些对象的其余属性将相同。

示例:Obj 具有属性“ID”、“E1”、“E2”、“E3”。请注意,这些都是 Obj 的属性。

我知道所有 Obj 列表的 ID 都不同,但如果不同 Obj 的 E1、E2 和 E3 相同,则希望进行分组。所以我会有一组具有相同 E1、E2、E3 但 ID 不同的 Obj。

在 C# 中处理这个问题最简单的方法是什么,有什么想法吗?

I have a list of objects that are keyed off or identified uniquely by one of their properties say "ID". I need to group all the objects of different ID's that will have rest of properties the same.

Example: Obj has properties "ID", "E1", "E2" , "E3". Note these are all properties of the Obj.

I know ID's are different for all List of Obj's, but would like to group if E1,E2 and E3 are same for different Obj's. So I would have array of Obj's that have same E1,E2,E3 but different ID's.

What's the easiest way of handling this in C#, any ideas?

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

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

发布评论

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

评论(3

苦妄 2024-10-31 23:28:44

好吧,类似这样的东西可以与 LINQ 一起使用:

var groups = collections.GroupBy(x => new { x.E1, x.E2, x.E3 });

这将为您提供一系列可以迭代的分组。例如:

var groups = collections.GroupBy(x => new { x.E1, x.E2, x.E3 });
foreach (var group in groups)
{
    Console.WriteLine("Key: {0}", group.Key);
    foreach (var item in group)
    {
        Console.WriteLine("  ID: {0}", item.ID);
    }
}

Well, something like this would work with LINQ:

var groups = collections.GroupBy(x => new { x.E1, x.E2, x.E3 });

That will give you a sequence of groupings you can iterate over. For example:

var groups = collections.GroupBy(x => new { x.E1, x.E2, x.E3 });
foreach (var group in groups)
{
    Console.WriteLine("Key: {0}", group.Key);
    foreach (var item in group)
    {
        Console.WriteLine("  ID: {0}", item.ID);
    }
}
做个少女永远怀春 2024-10-31 23:28:44

实现对象之间公共属性/方法的接口。使用接口类型进行交互。

Implement an Interface of common properties/methods between the objects. Use the interface type for interaction.

巴黎夜雨 2024-10-31 23:28:44

Linq 对我来说听起来不错。

public class YourClass
{
    public string ID { get; set; }
    public string E1 { get; set; }
    public string E2 { get; set; }
    public string E3 { get; set; }
}

public static YourClass[] GetClassArray(IEnumerable<YourClass> objects)
{
    return objects.OrderBy<YourClass, string>(c => c.E1)
                  .ThenBy<YourClass, string>(c => c.E2)
                  .ThenBy<YourClass, string>(c => c.E3)
                  .ThenBy<YourClass, string>(c => c.ID)
                  .ToArray<YourClass>();
}

Linq sounds good to me.

public class YourClass
{
    public string ID { get; set; }
    public string E1 { get; set; }
    public string E2 { get; set; }
    public string E3 { get; set; }
}

public static YourClass[] GetClassArray(IEnumerable<YourClass> objects)
{
    return objects.OrderBy<YourClass, string>(c => c.E1)
                  .ThenBy<YourClass, string>(c => c.E2)
                  .ThenBy<YourClass, string>(c => c.E3)
                  .ThenBy<YourClass, string>(c => c.ID)
                  .ToArray<YourClass>();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文