第一个查询返回一个字符串列表,我将它们传递到另一个表中以查找相应的项目,但没有任何反应。没有错误信息或没有
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();
答案 0 :(得分:4)
对Equals
的调用(object
)隐藏了问题:您正在将单个Id
与Id
列表进行比较,而不是检查是否Id
存在于集合中。这会编译,但不会产生任何结果。
以下是解决问题的方法:
var classes= Repository.Get(x => classIds.Any(y => y == x.Id)).ToList();
或
var classes= Repository.Get(x => classIds.Contains(x.Id)).ToList();
答案 1 :(得分:3)
如果您必须在2个查询中执行此操作,则必须使用contains
var classes= Repository.Get(x => classIds.Contains(x.Id)).ToList();
更好的解决方案是在表格上使用连接。
答案 2 :(得分:1)
你也可以跳过.ToList()
var classes= Repository.Get(x => classIds.Contains(x.Id));