2
我試圖找到使用AND邏輯而不是OR邏輯在多個IEnumerable<T>
集合中找到精確匹配的最優雅的方法。LINQ - 多個結果集的構建AND和OR邏輯
例
public class IceCream
{
public string Flavor { get; set; } // "Vanilla", "Choc Chip", "Mint"
public bool ContainsNuts { get; set; }
public ServingType { get; set; } // "Cup", "Cone", "Waffle Cone"
public SprinklesType { get; set; } // "Choc", "HundredsAndThousands", "EdibleBallBearings"
}
我的第一步是,我希望能夠通過單個搜索術語來獲得所有可用的冰淇淋:
IEnumerable<IceCream> IceCreamsByFlavor { get; set; }
IEnumerable<IceCream> IceCreamsByContainsNuts { get; set; }
IEnumerable<IceCream> IceCreamsByServingType { get; set; }
IEnumerable<IceCream> IceCreamsBySprinklesType { get; set; }
現在,我可以或者這些共同獲得具有該術語的任何屬性的冰淇淋集合:
return Enumerable.Empty<IceCream>()
.Concat(IceCreamsByFlavor)
.Concat(IceCreamsByContainsNuts)
.Concat(IceCreamsByServingType)
.Concat(IceCreamsBySprinklesType)
.Distinct();
但現在,說,如果我的搜索詞是:
Search(
flavor: "Vanilla",
containsNuts: true,
servingType: ServingType.WaffleCone,
sprinklesType: SprinkesType.HundredsAndThousands);
如何獲取包含包含的條款ALL只有冰淇淋,而不是其中任何的IEnumerable<IceCream>
?
像'myIceCreams.Where(I => i.Flavors.Contains(F)&& i.Nuts。包含(n)&& ...'。?我不是100%清楚你需要什麼。 – usr