2017-08-01 35 views
-1

我試圖在本網站上使用不同的示例,但無法找到解決我問題的示例。無法使用Linq從DataSet獲取特定ID的數據

我有一個數據集,我需要得到所有使用Linq該數據集的行與給定的ID

我做了以下內容:

foreach (DataRow dataRow in myData.Tables[0].Rows) 
{ 
    string id = dataRow["id"].ToString().Trim(); 
    var listOfData = myData.Tables[1].Rows.Cast<DataRow>().Where(x => x.Field<string>("id") == id); 
} 

如果這樣做,我有一個錯誤在Field<string>部分說

的DataRow不包含定義字段並沒有擴展方法接受領域的DataRow的第一個參數...

我發現實現這一目標的另一種方式:

DataRow[] listOfData = myData.Tables[1].Select("id=" + id); 

和它的作品,但我不希望使用的DataRow [],並希望使用Linq的查詢與where條款

什麼時我錯過了,是否有另一種方式呢?

回答

1

您應該引用System.Data.DataSetExtensions程序集併爲System.Data添加使用。 Field<T>()被定義爲DataRowExtensions類中的擴展函數。

雖然看到您在for循環中有效地進行了連接,但我會修改用於填充此數據集的查詢,並將連接推送到底層數據庫以提高性能。

+0

我有需要用到2個數據集。我只需要根據第一個數據庫中的第二個數據集獲取所有數據 – gene

0

試試這個:

  foreach (DataRow dataRow in dtZeroQtyBonusReceiveRows) 
      { 
       string id = dataRow["id"].ToString().Trim(); 

       var listOfData = zeroQuantityRows.CopyToDataTable().Rows.Cast<DataRow>() 
        .Where(x => Convert.ToString(x["id"]) == id); 
      } 
+0

@gene您是否知道能夠使上述簡單修復工作? – yido

相關問題