[英]lambda and linq expression
我正在處理一個asp.net mvc 5應用程序,並且試圖過濾一個列表,但是當我有多個選擇時,我總是會得到不好的結果。 我使用帶有復選框的簡單表格來知道選擇哪個任務的標准。
我的數據庫:
表任務具有條件列表(表:CriteriaList)
// public virtual ICollection<Criteria> CriteriaList { get; set; }
int[] CriteriaSelected = List of criteria selected in the form
var items = from i in db.Missions select i;
foreach (var criteriaID in CriteriaSelected)
{
items = items.Where(m => m.CriteriaList.Any(c => c.CriteriaID == criteriaID ));
}
我知道使用“ and”運算符來連接多個“ where”可能是一個問題,因為僅針對一個復選框,我得到了正確的結果。 但是我現在有點迷失了選擇多項標准的條件
非常感謝您的幫助
我會嘗試:
var items = db.Missions.Where(m => m.CriteriaList
.Any(c => CriteriaSelected.Contains(c.CriteriaID )));
您應該在所選標准中找到至少一個列表中的一個標准的所有任務。
但是請注意,由於有很多列表搜索,因此在記錄過多的情況下效果不佳。
@loiti很接近,但是刪除了他的答案而不是修改它。 這是您需要的:
var criteriaSelectedIds = CriteriaSelected.Select(s => s.CriteriaID);
var items = db.Missions.Where(m =>
m.CriteriaList.Any(c =>
criteriaSelectedIds.Contains(c.CriteriaID)
)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.