📅  最后修改于: 2023-12-03 14:52:14.975000             🧑  作者: Mango
在 C# 中,我们可以使用 LINQ 操作来过滤数据表的内容。在本文中,我们将介绍如何使用 LINQ 来过滤数据表中的数据。
我们可以使用以下代码来创建一个包含一些数据的数据表:
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Rows.Add(1, "Tom");
dt.Rows.Add(2, "Jerry");
dt.Rows.Add(3, "Lucy");
dt.Rows.Add(4, "John");
dt.Rows.Add(5, "Andy");
dt.Rows.Add(6, "Mike");
dt.Rows.Add(7, "Jack");
现在,我们有一个数据表,我们希望过滤出所有名字中包含 "a" 字母的数据行。我们可以使用以下代码实现:
var result = from DataRow row in dt.Rows
where row["Name"].ToString().Contains("a")
select row;
foreach (var row in result)
{
Console.WriteLine($"ID: {row["ID"]}, Name: {row["Name"]}");
}
上面的代码中,我们使用 LINQ 查询语句来过滤数据表。我们使用 from
关键字来指定要查询的数据源,然后使用 where
关键字来指定过滤条件。最后,我们使用 select
关键字来指定要返回的数据。
有时候,我们需要从数据表中过滤出所有唯一的数据行。我们可以使用以下代码来实现:
var result = dt.AsEnumerable()
.GroupBy(x => x["Name"])
.Select(g => g.First());
foreach (var row in result)
{
Console.WriteLine($"ID: {row["ID"]}, Name: {row["Name"]}");
}
上面的代码中,我们使用 AsEnumerable()
方法将 DataTable 转换为可枚举的类型,然后使用 GroupBy()
方法按名称进行分组。最后,我们使用 Select()
方法选择每个组中的第一个元素。
在本文中,我们介绍了如何在 C# 中使用 LINQ 操作来过滤数据表。如果您需要进一步了解 LINQ 操作,请参阅 Microsoft 的官方文档。