有沒有什麼辦法可以將LINQ表達式的結果轉換爲DataTable
,而不需要逐步通過每個元素?如何將LINQ結果轉換爲DATATABLE?
3
A
回答
2
沒有沒有辦法創建它沒有步進通過每個元素。 Linq表達式在需要的時候被評估,所以它會遍歷每一行(匹配和選擇)。
我想你應該嘗試使用DataTable.Select()
(MSDN link)方法,而不是因爲它返回DataRow
對象的數組,你可以添加到新表如下:
var rows = [ORIGINAL DATA TABLE].Select("id>5");
var dtb=[ORIGINAL DATA TABLE].Clone();
foreach(DataRow r in rows)
{
var newRow = dtb.NewRow();
newRow.ItemArray = r.ItemArray;
dtb.Rows.Add(newRow);//I'm doubtful if you need to call this or not
}
5
感謝this blogger,但我已經在改善他的算法在這裏。讓自己的擴展方法:
public static DataTable ToADOTable<T>(this IEnumerable<T> varlist)
{
DataTable dtReturn = new DataTable();
// Use reflection to get property names, to create table
// column names
PropertyInfo[] oProps = typeof(T).GetProperties();
foreach (PropertyInfo pi in oProps)
{
Type colType = pi.PropertyType;
if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
colType = colType.GetGenericArguments()[0];
dtReturn.Columns.Add(new DataColumn(pi.Name, colType));
}
foreach (T rec in varlist)
{
DataRow dr = dtReturn.NewRow();
foreach (PropertyInfo pi in oProps)
dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue(rec, null);
dtReturn.Rows.Add(dr);
}
return (dtReturn);
}
用法:
DataTable dt = query.ToADOTable();
相關問題
- 1. 如何動態地將LINQ查詢結果轉換爲DataTable?
- 2. 將LINQ轉換爲DataTable
- 3. 將LINQ結果轉換爲ObservableCollection
- 4. 將DataTable轉換爲LINQ匿名類型
- 5. 最佳實踐:將LINQ查詢結果轉換爲DataTable而不循環
- 6. 如何將Linq結果轉換爲字符串[]?
- 7. 如何將Linq查詢結果轉換爲XML?
- 8. 如何將Linq查詢轉換爲DataTable,DataSet或DataView?
- 9. 如何使用linq to dataSet將dataTable轉換爲數組?
- 10. 如何將FullTextSqlQuery結果轉換爲SPListItem?
- 11. 如何將CVXPY結果轉換爲numpy
- 12. 如何將BindingSource轉換爲DataTable?
- 13. 如何將Gridview轉換爲Datatable
- 14. 如何將datatable轉換爲xml?
- 15. 如何將DataTable轉換爲IDatareader?
- 16. 將結果轉換爲值
- 17. 將SQL轉換爲LINQ:將結果選擇到模型
- 18. 將DataRow []轉換爲DataTable的ASP.NET轉換
- 19. 將DataSet \ DataTable轉換爲CSV
- 20. 將Xml轉換爲DataTable
- 21. 將DataTable轉換爲JSON
- 22. 將Iqueryable轉換爲DataTable
- 23. 將DataTable轉換爲CSV流
- 24. 將IEnumerable轉換爲DataTable
- 25. 將XML轉換爲DataTable
- 26. 將datatable轉換爲datareader
- 27. C#將Datatable轉換爲
- 28. 如何將強類型的DataTable轉換爲無類型的DataTable
- 29. 如何使用LINQ在分組日期DataTable中轉換DataTable?
- 30. 將linq結果轉換爲列表<MyInterface>
使用你的代碼時,我得到這個錯誤:「CS0121:呼叫是下述方法或屬性之間曖昧:<然後將包含類你的方法>「你知道如何解決這個問題嗎?感謝您的代碼,+1 – Phil 2010-10-23 16:48:17
@Phil - 除非您發佈完整的錯誤文本,其中應包含對兩種競爭方法的引用,否則無法分辨。然後你會知道哪個其他方法具有相同的簽名。 – 2010-10-24 15:04:05
就是這樣......這對他們來說都是相同的簽名。真奇怪!無論如何,這是簽名,瑞典語中的一些名字。如果你直接不知道,我只會發表一個關於它的問題。錯誤消息:CS0121:以下方法或屬性之間的調用不明確:'Gruppkoll.App_Code.ConvertToDataTableFromLinqResult.ToADOTable(System.Collections.Generic.IEnumerable )'和'Gruppkoll.App_Code。 ConvertToDataTableFromLinqResult.ToADOTable (System.Collections.Generic.IEnumerable )' –
Phil
2010-10-25 08:45:54