使用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中文網其他相關文章!