【问题标题】:Know what id is not present知道什么 id 不存在
【发布时间】:2016-09-27 21:05:13
【问题描述】:

我有一个 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 是否都存在于表中,如果没有,找出哪一行不存在

最好的方法是什么?

【问题讨论】:

标签: c# sql-server linq


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    “我想知道列表中的所有id是否都存在于表中,如果没有,找出哪一行不存在”

    要确定所有列表中的 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();
    

    【讨论】:

    • 谢谢,但我想知道表中没有哪些 ID(表中缺少 ID)
    • 尝试编辑过的部分,它未经测试,如果成功请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 2012-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多