使用 LINQ 筛选数据集中的数据,并以字符串列表的形式获取结果

本文关键字:数据 列表 字符串 结果 获取 筛选 LINQ 数据集 集中 使用 | 更新日期: 2023-09-27 18:35:18

>我有数据集。我正在尝试在特定条件下过滤它:

  1. 列"display_name"的值长度为 7
  2. 列"display_name"的值以"N"开头
  3. 列 "display_name" 的值为 1 到 6 个字符,即 substr(1,6) 由 0 到 9 之间的任何字符组成

  4. 然后我想在列表中返回过滤结果。

我的代码如下:

 List<DataRow> filteredRows = ds.Tables[0].AsEnumerable()
                  .Where(x => (x.Field<string>("Display_name").Length==7) && (x.Field<string>("Display_name").StartsWith("N"))  

无法获取正确的 linq 查询。我第一天的linq,所以也许我做得不对。

使用 LINQ 筛选数据集中的数据,并以字符串列表的形式获取结果

首先,您不是在选择List<DataRow>而是IEnumerable<DataRow>。这就是为什么你的代码甚至不能编译。

我认为这是您的查询:

IEnumerable<DataRow> query = 
  from row in ds.Tables[0].AsEnumerable()
  let name = row.Field<string>("Display_name")
  where name.Length == 7 && name.StartsWith("N") && name.Skip(1).Take(6).All(char.IsDigit)
  select row;

如果您想要一个新的List<DataRow>

List<DataRow> rowList = query.ToList();

如果您想要一个新的DataTable

DataTable table = query.CopyToDataTable(); // throws an exception if no rows available