Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 传递列表<;字符串>;走进林克_C#_Linq - Fatal编程技术网

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));