我正在開發 .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();
uj5u.com熱心網友回復:
var d2 = PaymentSourceReferences.Where(x => !db.myTable.Any(t => t.Id == x)).ToList();
uj5u.com熱心網友回復:
這些當您PaymentSourceReference為空時。您不能將 null 傳遞給Contains
您可以分配空字串,如果它為 null,例如。PaymentSourceReference??String.Empty
下面我修改了你的代碼,你可以在 contains 方法中檢查
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();
uj5u.com熱心網友回復:
找到答案;
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();
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/318201.html
上一篇:如何分組多列并計數?
下一篇:如何構造特定的linq查詢?
