当前位置: 代码迷 >> C# >> 这个Linq怎么GroupBy
  详细解决方案

这个Linq怎么GroupBy

热度:155   发布时间:2016-05-05 05:16:16.0
这个Linq如何GroupBy

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() });


你再要就没有了
  相关解决方案