[C# Lambda] DataTable.AsEnumerable()使用範例


範例

0. 篩選

  1. class Program
  2. {
  3. static void Main()
  4. {
  5. DataTable table = GetSampleDataTable();
  6.  
  7. var filteredRows = table.AsEnumerable()
  8. .Where(row => row.Field<int>("Age") > 25)
  9. .ToList();
  10.  
  11. foreach (var row in filteredRows)
  12. {
  13. Console.WriteLine($"Name: {row["Name"]}, Age: {row["Age"]}");
  14. }
  15. }
  16.  
  17. static DataTable GetSampleDataTable()
  18. {
  19. DataTable table = new DataTable();
  20. table.Columns.Add("Name", typeof(string));
  21. table.Columns.Add("Age", typeof(int));
  22.  
  23. table.Rows.Add("Alice", 28);
  24. table.Rows.Add("Bob", 22);
  25. table.Rows.Add("Charlie", 30);
  26. table.Rows.Add("David", 25);
  27.  
  28. return table;
  29. }
  30. }

1. 排序(Sorting)

  1. var sortedRows = table.AsEnumerable()
  2. .OrderBy(row => row.Field<int>("Age"))
  3. .ToList();
  4.  
  5. foreach (var row in sortedRows)
  6. {
  7. Console.WriteLine($"Name: {row["Name"]}, Age: {row["Age"]}");
  8. }
  9.  

2. 投影(Projection)

  1. var projectedData = table.AsEnumerable()
  2. .Select(row => new
  3. {
  4. Name = row.Field<string>("Name"),
  5. Age = row.Field<int>("Age")
  6. })
  7. .ToList();
  8.  
  9. foreach (var item in projectedData)
  10. {
  11. Console.WriteLine($"Name: {item.Name}, Age: {item.Age}");
  12. }
  13.  

3. 分組(Grouping)

  1. var groupedData = table.AsEnumerable()
  2. .GroupBy(row => row.Field<int>("Age") / 10 * 10)
  3. .Select(group => new
  4. {
  5. AgeGroup = $"{group.Key}-{group.Key + 9}",
  6. Count = group.Count()
  7. })
  8. .ToList();
  9.  
  10. foreach (var group in groupedData)
  11. {
  12. Console.WriteLine($"Age Group: {group.AgeGroup}, Count: {group.Count}");
  13. }
  14.  

4. 比較式

4-1 等於(Equal)

  1. var equalRows = table.AsEnumerable()
  2. .Where(row => row.Field<string>("Name") == "Alice")
  3. .ToList();
  4.  

4-2 大於等於

  1. var greaterThanOrEqualRows = table.AsEnumerable()
  2. .Where(row => row.Field<int>("Age") >= 25)
  3. .ToList();
  4.  

4-3 多條件

  1. var multipleConditions = table.AsEnumerable()
  2. .Where(row => row.Field<string>("Name") == "Alice" && row.Field<int>("Age") > 25)
  3. .ToList();
  4.  

4-4 日期

  1. DateTime targetDate = new DateTime(1990, 1, 1);
  2.  
  3. var dateComparison = table.AsEnumerable()
  4. .Where(row => row.Field<DateTime>("Birthdate") >= targetDate)
  5. .ToList();
  6.  

---




留言

這個網誌中的熱門文章

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

Oracle 工作排程 DBMS_JOB 筆記

Oracle 例外控制(Exception Control)