使用LINQ查询DataTable:完整指南
虽然普遍认为无法直接使用LINQ查询DataTable,但这其实可以通过一些技巧实现。DataTable默认情况下不实现IEnumerable<T>
接口,因此无法直接查询其Rows集合。
解决方法是使用System.Data.DataSetExtensions
程序集提供的AsEnumerable()
扩展方法。通过在DataTable上调用此方法,您可以获得一个IEnumerable<DataRow>
对象,然后就可以用它进行LINQ查询了。
例如,以下查询将返回myDataTable
中RowNo
字段等于1的所有行:
<code class="language-csharp">var results = from myRow in myDataTable.AsEnumerable() where myRow.Field<int>("RowNo") == 1 select myRow;</code>
您也可以使用Lambda表达式创建LINQ查询:
<code class="language-csharp">var result = myDataTable.AsEnumerable() .Where(myRow => myRow.Field<int>("RowNo") == 1);</code>
请注意,您需要在项目中添加对System.Data.DataSetExtensions
程序集的引用才能访问这些扩展方法。
如果您需要将查询结果IEnumerable<DataRow>
转换回DataTable,可以使用CopyToDataTable()
扩展方法。
以上是如何在DataTables上执行LINQ查询?的详细内容。更多信息请关注PHP中文网其他相关文章!