C# 传递列表<;字符串>;走进林克
第一个查询返回一个字符串列表,我将它们传递到另一个表中以查找相应的项,但什么也没有发生。没有错误消息或什么都没有C# 传递列表<;字符串>;走进林克,c#,linq,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
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();
调用
Equals
,它接受对象
,隐藏了问题:您将单个Id
与Id
列表进行比较,而不是检查Id
是否存在于集合中。这可以编译,但不会产生任何结果
以下是您可以修复它的方法:
var classes= Repository.Get(x => classIds.Any(y => y == x.Id)).ToList();
或
如果必须在两个查询中执行此操作,则必须使用contains
var classes= Repository.Get(x => classIds.Contains(x.Id)).ToList();
更好的解决方案是在表上使用联接。您也可以跳过.ToList()
var classes= Repository.Get(x => classIds.Contains(x.Id)).ToList();
var classes= Repository.Get(x => classIds.Contains(x.Id));