我有一個包含50行的datable,並有一個ID列。我試圖得到一個僅包含如下ID的數組:從數據表中獲取一組ID(值)
string [] IDs = (from row in DataTable.Rows
select row["ID"].toString()).ToArray();
有沒有辦法做到這一點。我總是得到錯誤「無法找到查詢的,他執行......」
我有一個包含50行的datable,並有一個ID列。我試圖得到一個僅包含如下ID的數組:從數據表中獲取一組ID(值)
string [] IDs = (from row in DataTable.Rows
select row["ID"].toString()).ToArray();
有沒有辦法做到這一點。我總是得到錯誤「無法找到查詢的,他執行......」
使用DataTableExtensions.AsEnumerable
method通過向System.Data.DataSetExtensions
參考和using System.Data;
那麼你應該可以使用下面的查詢:
var query = from row in datatable.AsEnumerable()
select row["ID"].ToString();
string[] ids = query.ToArray();
如果您確實需要一個數組,您可以使用上面的最後一行或將括號括起來,並像原來一樣調用ToArray()
。我通常不是後一種方法的粉絲。
用流利的語法這將是:
string[] ids = datatable.AsEnumerable()
.Select(row => row["ID"].ToString())
.ToArray();
我試過我得到:'System.Data.DataTable'不包含'AsEnumerable'的定義,也沒有包含'AsEnumerable'的擴展方法。有什麼我需要引用 – Robert 2011-06-07 15:59:24
@Robert添加一個對System.Data.DataSetExtensions的引用,並通過'using System.Data'添加'System.Data'命名空間,因爲DataTable的AsEnumerable方法是不同的比通常的。 – 2011-06-07 16:03:39
是有反正你可以選擇列表中的數據表到客戶對象數組。假設所有的列將會相同。
爲什麼在那裏逗你挑逗...告訴我們整個錯誤消息。 – Hogan 2011-06-07 15:46:04
這個小寫'toString()'只是一個錯字,不是嗎? – M4N 2011-06-07 15:47:43
@曼,是的錯字。用手寫代碼 – Robert 2011-06-08 05:38:43