1. 程式人生 > >c# 中Linq Lambda 的ToLookup方法的使用

c# 中Linq Lambda 的ToLookup方法的使用

ss5 直接 list key gpo for 相對 lin 同時

同樣直接上代碼:

            List<Student> ss = new List<Student>();
            Student ss1 = new Student() { Id = 1, Age = 1, Name = "11" };
            Student ss2 = new Student() { Id = 1, Age = 1, Name = "11" };
            Student ss3 = new Student() { Id = 2, Age = 2, Name = "22" };
            Student ss4 
= new Student() { Id = 2, Age = 2, Name = "22" }; Student ss5 = new Student() { Id = 2, Age = 2, Name = "22" }; Student ss6 = new Student() { Id = 3, Age = 3, Name = "33" }; ss.Add(ss1); ss.Add(ss2); ss.Add(ss3); ss.Add(ss4); ss.Add(ss5); ss.Add(ss6);
//var aa = ss.GroupBy(m => new { m.Id, m.Age }).Select(group => new {group.Key.Id,group.Key.Age,count = group.Count()}).ToList(); //foreach (var item in aa) //{ // Console.WriteLine(item.Id + "||" + item.Age + "||" + item.count); //} var dic = ss.ToLookup(m => m.Id);
foreach (var item in dic) { Console.WriteLine("學生ID號:" + item.Key); foreach (var item1 in item) { Console.WriteLine("\t\t" + item1 + " || " + item1.Age + " || " + item1.Name); } }

執行結果:

學生ID號:1
                Test.Student || 1 || 11
                Test.Student || 1 || 11
學生ID號:2
                Test.Student || 2 || 22
                Test.Student || 2 || 22
                Test.Student || 2 || 22
學生ID號:3
                Test.Student || 3 || 33

其中item1是student實例。

此方法的作用和ToDictionary類似,但避免Dictionary類型key子段不能重復的問題。

同時也可用於按某字段Group By排序的場景,且相對後者的優勢是帶有索引便於操作(其實Group By的數據後面添加ToList()後也很方便,當然這是後話了)。

c# 中Linq Lambda 的ToLookup方法的使用