C# LINQ-为多个结果集构建和vs或逻辑

C# LINQ-为多个结果集构建和vs或逻辑,c#,linq,C#,Linq,我试图找到一种最优雅的方法,使用AND逻辑而不是OR逻辑,在多个IEnumerable集合中查找精确匹配 示例 public class IceCream { public string Flavor { get; set; } // "Vanilla", "Choc Chip", "Mint" public bool ContainsNuts { get; set; } public ServingType { get; set; } // "Cup", "Cone",

我试图找到一种最优雅的方法,使用AND逻辑而不是OR逻辑,在多个
IEnumerable
集合中查找精确匹配

示例

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; }
如何获得只包含所有术语而不是其中任何一个术语的
IEnumerable

return IceCreamsByFlavor
    .Intersect(IceCreamsByContainsNuts)
    .Intersect(IceCreamsByServingType)
    .Intersect(IceCreamsBySprinklesType);
它将只返回所有集合中的项目


请记住,根据平等性比较的实现方式,您可能需要使用
myIceCreams.Where(i=>i.Flavors.Contains(f)&&i.Nuts.Contains(n)&&&&……
?我并不完全清楚您需要什么。
Search(
    flavor: "Vanilla",
    containsNuts: true,
    servingType: ServingType.WaffleCone,
    sprinklesType: SprinkesType.HundredsAndThousands);
return IceCreamsByFlavor
    .Intersect(IceCreamsByContainsNuts)
    .Intersect(IceCreamsByServingType)
    .Intersect(IceCreamsBySprinklesType);