List<List<string>> List = new List<List<string>>()
{
new List<string>(){"1","2","3"},
new List<string>(){"2","1","3"},
new List<string>(){"1","5","5"},
new List<string>(){"5","1","5"},
new List<string>(){"1","1","5"},
};
上面的集合,要求按照List<string>元素分组,规则如下:
类似于{"1","2","3"与{"2","1","3"}是相等的元素,不考虑排列顺序,当然{"1","5","5"}与{"5","1","5"}也是相等的。
但是{"1","5","5"}与{"1","1","5"}这种就不是相等的。
请问,如何分组,最好用Linq的方法语法,不用查询语法。谢谢.....
------解决思路----------------------
var query = from lp in List.Select(l=>l.Sort().ToArray())
group lp by new {lp[0],lp[1],lp[2]} into g
select g
------解决思路----------------------
List<List<string>> list = new List<List<string>>()
{
new List<string>(){"1","2","3"},
new List<string>(){"2","1","3"},
new List<string>(){"1","5","5"},
new List<string>(){"5","1","5"},
new List<string>(){"1","1","5"},
};
var query = from l in list.Select(t => t.OrderBy(m => m).ToList()).ToList()
group l by new { L1 = l[0], L2 = l[1], L3 = l[2] } into g
select g;
在VS里敲了一遍,手写的不对
------解决思路----------------------
List<List<string>> list = new List<List<string>>()
{
new List<string>(){"1","2","3"},
new List<string>(){"2","1","3"},
new List<string>(){"1","5","5"},
new List<string>(){"5","1","5"},
new List<string>(){"1","1","5"},
};
var counts = list.Select(t => t.OrderBy(m => m).ToList()).GroupBy((l) => new { L1 = l[0], L2 = l[1], L3 = l[2] })
.Select(g => new { Key = g.Key, Count = g.Count() });
你再要就没有了