2016-07-28 18 views
0

该查询返回door_id所有标签匹配的门ID。将所有匹配的Llinq查询转换为OR(至少一个标签需要匹配)

List<decimal> matchingDoors db.tags 
    .Where(x => x.user_id == userId && (null == SystemId|| x.syid == SystemId)) 
    .GroupBy(x => x.door_id)   
    .Where(x => tags.All(y => 
      x.Any(z => z.name == y))) 
    .Select(x => x.Key).ToList<decimal>(); 

如何更改查询以返回匹配至少一个标记('OR')的结果?

+0

@a_horse_with_no_name检查了这一点。 –

+0

它只返回两个匹配的人。 –

+0

错误的查询,更新问题 –

回答

1

您应该在tags集合上使用Contains()方法。您在这里:

List<decimal> matchingDoors db.tags 
    .Where(x => x.user_id == userId && (null == SystemId|| x.syid == SystemId)) 
    .GroupBy(x => x.door_id)   
    .Where(x => x.Any(y => tags.Contains(y))) //this is where magic 
    .Select(x => x.Key).ToList<decimal>(); 
+0

可爱。朋友,谢谢。 –

相关问题