[C# Lambda] DataTable.AsEnumerable()使用範例
範例
0. 篩選
- class Program
- {
- static void Main()
- {
- DataTable table = GetSampleDataTable();
- var filteredRows = table.AsEnumerable()
- .Where(row => row.Field<int>("Age") > 25)
- .ToList();
- foreach (var row in filteredRows)
- {
- Console.WriteLine($"Name: {row["Name"]}, Age: {row["Age"]}");
- }
- }
- static DataTable GetSampleDataTable()
- {
- DataTable table = new DataTable();
- table.Columns.Add("Name", typeof(string));
- table.Columns.Add("Age", typeof(int));
- table.Rows.Add("Alice", 28);
- table.Rows.Add("Bob", 22);
- table.Rows.Add("Charlie", 30);
- table.Rows.Add("David", 25);
- return table;
- }
- }
1. 排序(Sorting)
- var sortedRows = table.AsEnumerable()
- .OrderBy(row => row.Field<int>("Age"))
- .ToList();
- foreach (var row in sortedRows)
- {
- Console.WriteLine($"Name: {row["Name"]}, Age: {row["Age"]}");
- }
2. 投影(Projection)
- var projectedData = table.AsEnumerable()
- .Select(row => new
- {
- Name = row.Field<string>("Name"),
- Age = row.Field<int>("Age")
- })
- .ToList();
- foreach (var item in projectedData)
- {
- Console.WriteLine($"Name: {item.Name}, Age: {item.Age}");
- }
3. 分組(Grouping)
- var groupedData = table.AsEnumerable()
- .GroupBy(row => row.Field<int>("Age") / 10 * 10)
- .Select(group => new
- {
- AgeGroup = $"{group.Key}-{group.Key + 9}",
- Count = group.Count()
- })
- .ToList();
- foreach (var group in groupedData)
- {
- Console.WriteLine($"Age Group: {group.AgeGroup}, Count: {group.Count}");
- }
4. 比較式
4-1 等於(Equal)
- var equalRows = table.AsEnumerable()
- .Where(row => row.Field<string>("Name") == "Alice")
- .ToList();
4-2 大於等於
- var greaterThanOrEqualRows = table.AsEnumerable()
- .Where(row => row.Field<int>("Age") >= 25)
- .ToList();
4-3 多條件
- var multipleConditions = table.AsEnumerable()
- .Where(row => row.Field<string>("Name") == "Alice" && row.Field<int>("Age") > 25)
- .ToList();
4-4 日期
- DateTime targetDate = new DateTime(1990, 1, 1);
- var dateComparison = table.AsEnumerable()
- .Where(row => row.Field<DateTime>("Birthdate") >= targetDate)
- .ToList();
---
留言
張貼留言