Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# 带有列表的LINQ语句<;国际?>;不返回结果?_C#_Linq - Fatal编程技术网

C# 带有列表的LINQ语句<;国际?>;不返回结果?

C# 带有列表的LINQ语句<;国际?>;不返回结果?,c#,linq,C#,Linq,我有以下LINQ查询 var sites = new List<int?>(); sites.Add(customer.SiteId); return context.Where<Equipment>(x => sites.Contains(x.SiteId)).ToList(); 我得到返回的数据,但是如果我将ID59传递给上面的语句,我不会得到返回的结果吗?有人能告诉我我在这里做错了什么吗?您在一个名为站点的表中有一个项目,其站点ID为59,但是,您尝试从上

我有以下LINQ查询

var sites = new List<int?>();
sites.Add(customer.SiteId);

return context.Where<Equipment>(x => sites.Contains(x.SiteId)).ToList();

我得到返回的数据,但是如果我将ID59传递给上面的语句,我不会得到返回的结果吗?有人能告诉我我在这里做错了什么吗?

您在一个名为
站点
的表中有一个项目,其
站点ID
为59,但是,您尝试从
上下文
加载
设备
记录,而
站点ID
为59,这不会产生给定
站点
记录的设备。这意味着您有一个
站点
记录,其
id
为59,但没有
设备
通过id 59链接到该站点。运行查询以查看哪些设备具有给定的
站点ID
,例如:

select *
from Equipments
where SiteId = 59

这里的
上下文是什么?这个实体框架,LINQ到SQL,是其他的吗?您能够查看生成的SQL吗?如果您将
站点
设为
列表
而不是
列表
,会发生什么情况?您正在使用简化列表进行测试,并且只插入
59
,这已经失败了?您没有将数据添加到DataContext中。我肯定会先使用
列表
,因为如果生成的SQL是
中的SiteId(59,null),我怀疑在列表中传递
null
值是否与数据库端的
null
匹配
但也许EF足够聪明,可以使
SiteId为null | | SiteId在(59)
@juharr我猜
x.SiteId
可以为null,这就是OP使用
List
的原因,而不是因为他要在那里存储null。
select *
from Equipments
where SiteId = 59