LINQ GroupBy源= A目标= B或源= B且目标= A

时间:2019-09-19 10:42:21

标签: c# linq

如何将类似这样的东西分组:

Obj1 { Source = A, Destination = B }
Obj2 { Source = B, Destination = A }

我在寻找如何对它们进行分组时遇到困难。
谁能帮我吗?

1 个答案:

答案 0 :(得分:0)

假设您的对象包含 string 属性 Source Destination ,则可以添加一个属性或方法,以按字母顺序返回其值方式。这样,可以将相反的值归类为相等。

public class Obj
{
    public string Source { get; set; }
    public string Destination { get; set; }

    public string Key => string.Compare(Source, Destination) > 0 ? 
                              Source + "," + Destination : Destination + "," + Source;
 }

然后您可以按以下方式将它们分组:

 var groupedObjects = objects.GroupBy(x => x.Key);