c#에서 Linq Lambda의 ToLookup 방법 사용

5695 단어 c#
마찬가지로 코드에 직접 올리기:
            List ss = new List();
            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 유형의 키 하위 세그먼트가 중복되지 않는 문제를 피합니다.
또한 한 필드에 따라 Group By로 정렬된 장면에 사용할 수 있고 후자에 비해 색인을 가지고 조작하기 편리하다는 장점이 있다(사실 Group By의 데이터 뒤에 ToList()를 추가하면 편리하다. 물론 이것은 뒷말이다).
 
전재 대상:https://www.cnblogs.com/lbhqq/p/8478118.html

좋은 웹페이지 즐겨찾기