我的查询如下
DataRow dr = objDtModifier.Rows[num];
var existingRows = resultDataTable.AsEnumerable().Where(row => row == dr);
但是existingRows.Count
总是让我归零。
谁能说出这里的错误。
答案 0 :(得分:4)
您正在将objDtModifier源colloction中的行对象与resultDataTable集合中的一组不同的行对象进行比较,这些行对象将总是返回一个空结果集,因为它们是一组不同的对象引用(无论它们是否包含是否相同的数据) 有可以测试的房产吗?例如:
var existingRows = resultDataTable.AsEnumerable().Where(row => row.Id == dr.Id);
答案 1 :(得分:1)
将从名为objDtModifier
的表中获取的行对象与名为resultDataTable
的表中的行进行比较。所以,除非这是一个错字,否则这可能是错误的。
编辑:即使它们包含来自同一数据库表的行,您也要比较两个不同行对象的对象引用 - 这将失败。您需要比较两列唯一标识行(或可能是一组列)的列。
答案 2 :(得分:1)
这是因为row和dr不是同一个对象而你要比较两个对象, 尝试检查行的列,例如主键值
答案 3 :(得分:0)
无论他们是否是同一类型。如果objDtModifier和resultDataTable不包含相同的实例,那么您获得的行为是正确的。
row == dr使用引用相等,如chris所述。如果objDtModifier和resultDataTable包含不同的行实例但引用相同的数据,那么如果id是数据的主键,则可能需要使用row.id == dr.id。