知道什么ID不存在

时间:2016-09-27 21:05:14

标签: c# sql-server linq

我有一个SQL表:

Id  FirstName   LastName    DateTime
1   John        Doe         2016-09-27 20:45:52.293
2   John        Doe         2016-09-27 20:45:53.620
3   John        Doe         2016-09-27 20:46:02.370
4   John        Doe         2016-09-27 20:46:02.533
5   John        Doe         2016-09-27 20:46:02.680
6   John        Doe         2016-09-27 20:46:02.820

一个List<Int>

List<int> ids = new List<int>(){ 2, 3, 5 }

我使用Linq To Sql类来获取我的sql表中的所有记录。我这样做:

using(DataClassesDataContext Context = new DataClassesDataContext())
{
    var Customers = Context.Customers;
}

我想知道列表中的所有ID是否都存在于表中,如果没有,请找出不存在的行

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:0)

您可以使用LINQ中的Any查找所有缺少的客户详细信息

var missingCustomers = Customers.Where(c => !ids.Any(i => i == c.Id)).ToList();

答案 1 :(得分:0)

&#34;我想知道列表中是否存在列表中的所有ID,如果没有,请找出不存在的行&#34;

要查明表格中是否存在所有列表中的ID:

bool check = ids.All(i => Customers.Select(s => s.Id).Contains(i));

要了解哪些客户存在(与此处的其他答案类似):

var missingCustomers = Customers.Where(c => !ids.Contains(c.Id)).ToList();

修改

反过来(在表中找到缺少的ID):

var allTableIds = Customers.Select(s => s.Id).ToList();
var missingCustomersIDs = ids.Where(c => !allTableIds.Contains(c)).ToList();