基于两个键对字符串进行分组

时间:2014-04-24 06:25:03

标签: c# linq

我有一个字符串列表,每个字符串有两个数字,用#分隔。

我想对字符串进行分组,以便1#22#1位于同一组中。

例如,以此列表为例

{"1#2","1#6","1#2","2#1"}

我想以这种方式对此列表进行分组

key=1#2 or 2#1
Value={"1#2","1#2","2#1"}

key=1#6 or 6#1
Value={"1#6"}

所以我想根据两个不同的键对字符串进行分组。

我试过

list.GroupBy(x=>x);

但它将其分为三个键1#22#11#6而不是两个键1#2 or 2#11#6

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

void Main()
{
    var list = new string[] {"1#2","1#2","2#1"};
    var result = list.GroupBy(x => x.Split('#').OrderBy(y => y).Aggregate((a,b)=>a + "#" + b));

    //should output only one key - 1#2
    foreach(var key in result)
    {
         Console.WriteLine(key);
    }
}

即使有超过2个值,也应该有效,等等1#2#3