我有一个字符串列表,每个字符串有两个数字,用#
分隔。
我想对字符串进行分组,以便1#2
和2#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#2
,2#1
,1#6
而不是两个键1#2 or 2#1
,1#6
答案 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