簡體   English   中英

Linq檢查數據行是否存在於數據表中

[英]Linq to check if the datarow exists in a datatable

我有如下查詢

  DataRow dr = objDtModifier.Rows[num];
  var existingRows = resultDataTable.AsEnumerable().Where(row => row == dr);

但是existingRows.Count總是返回零。

誰能告訴我這是怎么回事。

您正在將objDtModifier源集合中的行對象與resultDataTable集合中的另一組行對象進行比較,由於它們是一組不同的對象引用,因此它們將始終返回空結果集(無論它們是否包含相同的數據或不)。
有沒有可以測試的屬性? 例如:

var existingRows = resultDataTable.AsEnumerable().Where(row => row.Id == dr.Id);

您將從objDtModifier表獲得的行對象與來自objDtModifier表的行進行resultDataTable 因此,除非那是錯字,否則可能是錯誤的。

編輯 :即使它們包含來自同一數據庫表的行,您也在比較兩個不同行對象的對象引用-這將失敗。 您需要比較兩個唯一標識行的列(或可能是一組列)。

發生這種情況是因為row和dr不是同一對象,而您將要比較兩個對象,請嘗試檢查row的列,例如主鍵值

無論它們是否是同一類型。 如果objDtModifier和resultDataTable不包含相同的實例,則您得到的行為是正確的。

row == dr通過引用使用相等性,如chris所述。 如果objDtModifier和resultDataTable包含不同的行實例但引用相同的數據,則如果id是數據的主鍵,則可能要使用row.id == dr.id。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM