簡體   English   中英

lambda和linq表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM