[英]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.