我有数据集。我正在尝试在特定条件下对其进行过滤:
“ 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句