我正在使用物體框架核心開發 .NET 6 應用程式。我正在使用 LINQ 創建記錄搜索查詢,我希望收到字串串列。字串值的數量不是固定的,并且會有所不同。如何在 LINQ 中使用 List 包含?
List<string> Roles = new List<string>() { "Business Analyst", "Business Analysis Lead", "Application Support Analyst" };
var records = (from jobProfile in db.JobProfiles
where jobProfile.Role.Contains(Roles)
select jobProfile).ToList();
uj5u.com熱心網友回復:
像這樣的東西:
var records = (
from jobProfile in db.JobProfiles
where jobProfile.Role.Any(r => Roles.Contains(r.Name))
select jobProfile
).ToList();
或使用流暢的界面:
var records =
db
.JobProfiles
.Where(jp => jp.Role.Any(r => Roles.Contains(r.Name)))
.ToList();
Roles可以是任何IEnumerable. EF 會將方法呼叫轉換為IN子句。
請注意,如果源(此處db.JobProfiles)不再是 anIQueryable而是 an IEnumerable,那么您將使用 O(n).Contains呼叫。只要它是 EF,你就可以使用IEnumerablefor Rolessince.Contains在這種情況下實際上并未呼叫,但對于 LINQ to Objects,您需要確保它是某種型別的 Set。
如果Role是string屬性而不是物體,那么它會更簡單一些:
var records = (
from jobProfile in db.JobProfiles
where Roles.Contains(jobProfile.Role)
select jobProfile
).ToList();
或使用流暢的界面:
var records =
db
.JobProfiles
.Where(jp => Roles.Contains(jp.Role))
.ToList();
uj5u.com熱心網友回復:
您需要按角色串列包含職位資料角色的位置進行過濾:
var records = (from jobProfile in db.JobProfiles
where Roles.Contains(jobProfile.Role)
select jobProfile).ToList();
...或流利的:
var records = db.JobProfiles
.Where(x => Roles.Contains(x.Role))
.ToList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/526729.html
標籤:C#林克实体框架核心
上一篇:從歷史記錄中排除頁面
