将列表 <string> 传递到 Linq

cas*_*las 2 c# linq

第一个查询返回一个字符串列表,我将它们传递到另一个表中以查找相应的项目,但没有任何反应。没有错误消息或什么也没有

var classIds = _contextSpecRepo.Get(x => x.cId.Equals(cId)).Select(x => x.classNames).Distinct().ToList();
// issue happens in the following query
var classes= Repository.Get(x => x.Id.Equals(classIds)).ToList();
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

对 的调用Equals(采用object)隐藏了问题:您正在将单个值Id与 s 列表进行比较Id,而不是检查 s 是否Id存在于集合中。这可以编译,但不会产生任何结果。

以下是解决方法:

var classes= Repository.Get(x => classIds.Any(y => y == x.Id)).ToList();
Run Code Online (Sandbox Code Playgroud)

或者

var classes= Repository.Get(x => classIds.Contains(x.Id)).ToList();
Run Code Online (Sandbox Code Playgroud)