C# LINQ,其中列表变量和列表中的数据可能为空
我有一个列表,其中包含所有需要与数据库进行比较的值C# LINQ,其中列表变量和列表中的数据可能为空,c#,linq,linq-to-entities,C#,Linq,Linq To Entities,我有一个列表,其中包含所有需要与数据库进行比较的值 from staff in this.unitOfWork.StaffRepository.Data where officeIds.Contains(staff.OfficeId) OfficeID具有int[]类型,并且OfficeID可以为null。如果OfficeID为空,我该怎么办 我试过了 where officeIds != null && officeIds.Contains(staff.OfficeId)
from staff in this.unitOfWork.StaffRepository.Data
where officeIds.Contains(staff.OfficeId)
OfficeID具有int[]类型,并且OfficeID可以为null。如果OfficeID为空,我该怎么办
我试过了
where officeIds != null && officeIds.Contains(staff.OfficeId)
但它不起作用。它抛出一个异常
EntityFramework.SqlServer.dll中发生类型为“System.NotSupportedException”的异常,但未在用户代码中处理
其他信息:无法比较类型的元素
“System.Int32[]”。仅原语类型、枚举类型和实体
类型是受支持的
感谢haim770的建议,以下是他的评论: OfficeID数组的存在使得LINQtoEntities能够发出一个SQLIn(…,…)操作符,检查它的空值并不是提供者应该做的事情
您最好始终将OfficeID初始化为空数组(OfficeID=new int[]),或者仅在检查空性之后才附加where子句(后一种方法听起来更合理) 这里的要点是我们应该开箱思考,而不是关注如何在
where
语句中检查null问题陈述:
from staff in this.unitOfWork.StaffRepository.Data
where officeIds.Contains(staff.OfficeId)
在acceptIQueryable
中执行以下。我们可以从
var query = this.unitOfWork.StaffRepository.Data
if(list != null && list.Count > 0)
query = query.Where("condition")
from staff in query
where *continue other conditions*
select ...
感谢haim770的建议,以下是他的评论: OfficeID数组的存在使得LINQtoEntities能够发出一个SQLIn(…,…)操作符,检查它的空值并不是提供者应该做的事情
您最好始终将OfficeID初始化为空数组(OfficeID=new int[]),或者仅在检查空性之后才附加where子句(后一种方法听起来更合理) 这里的要点是我们应该开箱思考,而不是关注如何在
where
语句中检查null问题陈述:
from staff in this.unitOfWork.StaffRepository.Data
where officeIds.Contains(staff.OfficeId)
在acceptIQueryable
中执行以下。我们可以从
var query = this.unitOfWork.StaffRepository.Data
if(list != null && list.Count > 0)
query = query.Where("condition")
from staff in query
where *continue other conditions*
select ...
定义“不起作用”。是否有正在抛出的异常?然后请将其包含在question@haim770谢谢,我刚刚编辑过:)我们需要异常详细信息。不是因为存在例外,
OfficeID
数组,这样Linq to实体就能够在(…,…)操作符中发出SQL,检查它的空值并不是提供者应该做的事情。您最好总是将officeIds
初始化为空数组(officeIds=newint[]
),或者仅在检查空性后才附加where
子句(后一种方法听起来更合理)。定义“不起作用”。是否有正在抛出的异常?然后请将其包含在question@haim770谢谢,我刚刚编辑过:)我们需要异常详细信息。不是因为存在例外,OfficeID
数组,这样Linq to实体就能够在(…,…)
操作符中发出SQL,检查它的空值并不是提供者应该做的事情。您最好总是将officeIds
初始化为空数组(officeIds=newint[]
),或者仅在检查空性之后才附加where
子句(后一种方法听起来更合理)。