与每个id的字符串列表完全匹配



我需要一个Linq查询,如果不是所有行都有来自每个hardware_id列的List<string>中的匹配字符串,该查询将返回null。

我有下表:

  • id(int)-主键
  • 名称(字符串)
  • user_id(int)
  • hardware_id(int)

我有一个包含短语的List<string>。如果列表中的所有短语在名称行中都有匹配的字符串,我希望查询返回hardare_id编号。如果有一个短语不具有name匹配,则返回null,并且如果所有短语的每个hardware_id都存在所有短语,则查询应返回hardware_ids的列表,这些hardware_id's中的每一个都与列表中的所有短语完全匹配。

或者换句话说,返回一个hardware_id的列表,每个id的所有name都与List<string>中的相匹配。

我想过在不同的查询中迭代每个Id,但这不是一种有效的方法。也许你知道一个好的查询可以解决这个问题。我使用的是实体框架6/C#/MySQL

注意:查询只针对每个用户id进行。因此,我首先根据用户id筛选表,然后需要找到满足条件的匹配hardare_id。

hardware_id上分组,然后查找List 中存在的所有短语

table.GroupBy(x=>x.hardware_id)
     .Where(x=> x.All(s=> phrases.Contains(s.name))
     .Select(x=>x.Key); 

相关内容

  • 没有找到相关文章

最新更新