将DataRow集合与List <T>进行比较

Jon*_*Jon 5 c# linq datatable datarow c#-3.0

我有一个List<string>,我有一个DataTable.

DataRow中的一列是ID.List包含此ID的实例.

DataTable将填充在Timer上.

我想将列表中不在DataTable中的项目返回到另一个列表中.

bdo*_*den 13

你会想做这样的事情

var tableIds = table.Rows.Cast<DataRow>().Select(row => row["ID"].ToString());

var listIds = new List<string> {"1", "2", "3"};

return listIds.Except(tableIds).ToList();
Run Code Online (Sandbox Code Playgroud)

您可以将数据表中的行转换为IEnumerable集合,然后从每个行中选择"ID"列值.然后,您可以使用Enumerable.Except扩展方法从List中获取不在您刚刚创建的集合中的所有值.

如果需要获取表中的值而不是列表中的值,只需反转listIds和tableIds.