C# LINQ-为多个结果集构建和vs或逻辑
我试图找到一种最优雅的方法,使用AND逻辑而不是OR逻辑,在多个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",
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);