2011-06-07 54 views
3

我有一個包含50行的datable,並有一個ID列。我試圖得到一個僅包含如下ID的數組:從數據表中獲取一組ID(值)

string [] IDs = (from row in DataTable.Rows 
       select row["ID"].toString()).ToArray(); 

有沒有辦法做到這一點。我總是得到錯誤「無法找到查詢的,他執行......」

+1

爲什麼在那裏逗你挑逗...告訴我們整個錯誤消息。 – Hogan 2011-06-07 15:46:04

+1

這個小寫'toString()'只是一個錯字,不是嗎? – M4N 2011-06-07 15:47:43

+0

@曼,是的錯字。用手寫代碼 – Robert 2011-06-08 05:38:43

回答

4

使用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(); 
+0

我試過我得到:'System.Data.DataTable'不包含'AsEnumerable'的定義,也沒有包含'AsEnumerable'的擴展方法。有什麼我需要引用 – Robert 2011-06-07 15:59:24

+1

@Robert添加一個對System.Data.DataSetExtensions的引用,並通過'using System.Data'添加'System.Data'命名空間,因爲DataTable的AsEnumerable方法是不同的比通常的。 – 2011-06-07 16:03:39

0

是有反正你可以選擇列表中的數據表到客戶對象數組。假設所有的列將會相同。