C# 查询时检查哈希集中的每个值
我有一个查询,在where语句中,我检查哈希集包含列的值,即:C# 查询时检查哈希集中的每个值,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,我有一个查询,在where语句中,我检查哈希集包含列的值,即: var cHashset = {"cat","dog","bird"} 数据库看起来像: ID Category 1 dog 1 cat 1 bird 2 dog 3 cat 3 dog 4 bird 那么对于查询的Where部分,我有: .Where(o => cHashset.Contains(o.Category)) .Select (o => o.
var cHashset = {"cat","dog","bird"}
数据库看起来像:
ID Category
1 dog
1 cat
1 bird
2 dog
3 cat
3 dog
4 bird
那么对于查询的Where部分,我有:
.Where(o => cHashset.Contains(o.Category))
.Select (o => o.ID).Distinct();
如何确保只选择猫、狗和鸟类别的值?如果上面的当前设置只查找一个类别,但如果我需要确保所有类别,则无法正常工作
谢谢您的帮助。您必须先按id分组。现在,您可以查看cHashSet中的所有元素是否都包含在给定组的类别中
var result = myData.GroupBy(x => x.ID)
.Where(x => cHashSet.All(y => x.Select(z => z.Category).Contains(y)))
.Select(x => x.ID);
所以,如果我是对的,那么您想要所有这些ID,其中所有三个类别都存在于您的示例中1?正确@你错过了一个分机,我想是在那里。