首页 > 解决方案 > C# LINQ 从列表中选择值不包含在数据库中

问题描述

我正在与 Entity Framework CORE 一起开发 .NET CORE 5 应用程序。我有字符串列表,我需要从列表中过滤掉数据库中不存在的记录,以便我只能处理这些记录。在接下来的尝试中,我收到了 null 错误。我正在使用 Contain 但如果我有大约 4000 条记录,我不确定它是否真的合适

error

   Value cannot be null. (Parameter 'value')

Code

 List<string> PaymentSourceReferences = new List<string>();
        PaymentSourceReferences.Add("e3gdf210-f933-ec11-xxxx-00505691aaaa");
        PaymentSourceReferences.Add("gg34b580-f843-ec11-xxxx-00505691rrrr");
        PaymentSourceReferences.Add("43gf353d-f8fe-ec11-xxxx-00505691tttr");
        PaymentSourceReferences.Add("h4gd5170-7943-ec11-xxxx-00505687bbbb");
        PaymentSourceReferences.Add("4gdv5170-7965-ec11-xxxx-005056874gdg");

   var d2 = (from x in PaymentSourceReferences
             where !x.Contains(db.myTable)
             select PaymentSourceReference).ToList();

标签: c#linqentity-framework-core.net-5

解决方案


var d2 = PaymentSourceReferences.Where(x => !db.myTable.Any(t => t.Id == x)).ToList();

推荐阅读