3
我有一個包含屬性集合的集合。每個屬性都有一個類型和一個Id。我需要過濾屬性id在一組屬性類型中的集合,但屬性類型是and'd。我想出了以下內容,並想知道是否有更好的方法。是否有更好或更有效的方式來篩選linq
foreach (var ag in andAttrGrpIds)
{
filteredModels = filteredModels.Where(x => x.ProductAttributes.Any(pa => pa.AttributeType==ag && orAttributes.Contains(pa.AttributeId))).ToList();
}
在上面的代碼片段中,andAttrGrpIds和orAttributes是字符串數組。
謝謝你。我已經將其與公式的另一部分合並,其中的一個屬性類型是子值和值。將曾經是一個兩步過程的過程減少到我正在尋找的單個語句。 – jason
它坐落在這裏 filteredModels從模型=在allModels \t \t \t \t \t讓mAttribs =每年從在model.ProductAttributes \t \t \t \t \t \t \t \t \t其中orAttributes.Contains(pa.AttributeId) \t \t \t \t \t \t \t \t \t select pa。屬性類型 \t \t \t \t \t讓objAttribIds = model.ProductAttributes.Select(PA => pa.AttributeId) \t \t \t \t \t其中(string.IsNullOrEmpty(andAttributes [0])&& andAttributes.Count()== 1) || !andAttributes.Except(objAttribIds)。任何() \t \t \t \t \t其中(string.IsNullOrEmpty(andAttrGrpIds [0])&& andAttrGrpIds.Count()== 1)|| !andAttrGrpIds.Except(mAttribs).Any() \t \t \t \t \t select model; – jason