C# LINQ select 来自列表,其中值不包含在数据库中
C# LINQ select from List where value is not contained in database
我正在开发 .NET CORE 5 应用程序以及 Entity Framework CORE。我有字符串列表,我需要从列表中过滤掉数据库中不存在的记录,以便我只能处理这些记录。在接下来的尝试中,我得到了空错误。我正在使用 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();
当您的 PaymentSourceReference
为空时。
您不能将 null 传递给 Contains
如果为空,则可以分配空字符串
例如。 PaymentSourceReference??String.Empty
下面我已经修改了你的代码你可以检查里面包含的方法
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");
string PaymentSourceReference = null;
var d2 = (from x in PaymentSourceReferences
where !x.Contains(PaymentSourceReference??String.Empty)
select PaymentSourceReference).ToList();
var d2 = PaymentSourceReferences.Where(x => !db.myTable.Any(t => t.Id == x)).ToList();
找到答案;
var existingPaymentReferences =
(from payment in db.BoPcnPayments
where PaymentSourceReferences.Contains(payment.PaymentSourceReference)
select payment.PaymentSourceReference).ToList();
var paymentReferencesToProcess =
(from csvPayements in PaymentSourceReferences
where !existingPaymentReferences.Contains(csvPayements)
select csvPayements).ToList();
我正在开发 .NET CORE 5 应用程序以及 Entity Framework CORE。我有字符串列表,我需要从列表中过滤掉数据库中不存在的记录,以便我只能处理这些记录。在接下来的尝试中,我得到了空错误。我正在使用 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();
当您的 PaymentSourceReference
为空时。
您不能将 null 传递给 Contains
如果为空,则可以分配空字符串
例如。 PaymentSourceReference??String.Empty
下面我已经修改了你的代码你可以检查里面包含的方法
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");
string PaymentSourceReference = null;
var d2 = (from x in PaymentSourceReferences
where !x.Contains(PaymentSourceReference??String.Empty)
select PaymentSourceReference).ToList();
var d2 = PaymentSourceReferences.Where(x => !db.myTable.Any(t => t.Id == x)).ToList();
找到答案;
var existingPaymentReferences =
(from payment in db.BoPcnPayments
where PaymentSourceReferences.Contains(payment.PaymentSourceReference)
select payment.PaymentSourceReference).ToList();
var paymentReferencesToProcess =
(from csvPayements in PaymentSourceReferences
where !existingPaymentReferences.Contains(csvPayements)
select csvPayements).ToList();