使用 LINQ 筛选数据集中的数据,并以字符串列表的形式获取结果
本文关键字:数据 列表 字符串 结果 获取 筛选 LINQ 数据集 集中 使用 | 更新日期: 2023-09-27 18:35:18
>我有数据集。我正在尝试在特定条件下过滤它:
- 列"display_name"的值长度为 7
- 列"display_name"的值以"N"开头
-
列 "display_name" 的值为 1 到 6 个字符,即 substr(1,6) 由 0 到 9 之间的任何字符组成
-
然后我想在列表中返回过滤结果。
我的代码如下:
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,所以也许我做得不对。
首先,您不是在选择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