C#, LINQ, 利用group new 來取得多欄位group by

C#, LINQ, 利用group new 來取得多欄位group by

  1. void Main()
  2. {
  3. // 建立 ClassA 的 List
  4. List<ClassA> classAList = new List<ClassA>
  5. {
  6. new ClassA("A1", 10),
  7. new ClassA("A2", 20),
  8. new ClassA("A3", 30),
  9. new ClassA("A1", 15),
  10. new ClassA("A2", 25),
  11. new ClassA("A3", 35)
  12. };
  13. // 建立 ClassB 的 List
  14. List<ClassB> classBList = new List<ClassB>
  15. {
  16. new ClassB("A1", "C1"),
  17. new ClassB("A2", "C2")
  18. };
  19. //classAList.Dump();
  20. //classBList.Dump();
  21. // 使用 LINQ 進行關聯和分組
  22. var query = from a in classAList
  23. join b in classBList on a.A equals b.A
  24. select a;
  25. query.Dump();
  26. var query2 = from a in query
  27. group new { a.A, a.B } by a.A into grouped
  28. select new { A = grouped.Key, SumB = grouped.Sum(item => item.B) };
  29. query2.Dump();
  30. }
  31. // Define other methods and classes here
  32. // ClassA 定義
  33. class ClassA
  34. {
  35. public string A { get; set; }
  36. public int B { get; set; }
  37. public ClassA(string a, int b)
  38. {
  39. A = a;
  40. B = b;
  41. }
  42. }
  43. // ClassB 定義
  44. class ClassB
  45. {
  46. public string A { get; set; }
  47. public string C { get; set; }
  48. public ClassB(string a, string c)
  49. {
  50. A = a;
  51. C = c;
  52. }
  53. }

 

執行結果 :

A B
A1 10
A2 20
A1 15
A2 25

A SumB
A1 25
A2 45


 

留言

這個網誌中的熱門文章

ORA-12514: TNS: 監聽器目前不知道連線描述區中要求的服務

Oracle 工作排程 DBMS_JOB 筆記

Oracle 例外控制(Exception Control)