📜  如何在 C# 中过滤数据表(1)

📅  最后修改于: 2023-12-03 14:52:14.975000             🧑  作者: Mango

如何在 C# 中过滤数据表

在 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 的官方文档。