C# 实体框架5.0。我的问题出了什么问题?
这是我的代码:C# 实体框架5.0。我的问题出了什么问题?,c#,linq,entity-framework,C#,Linq,Entity Framework,这是我的代码: public DateTime GibSomeStartDate(IEnumerable<int> partnerNumbers, DateTime startTime) { var contractsStartDate = from contract in this.databaseContext.Contract where partnerNumbers.Contains(contract.Pn
public DateTime GibSomeStartDate(IEnumerable<int> partnerNumbers, DateTime startTime)
{
var contractsStartDate = from contract in this.databaseContext.Contract
where partnerNumbers.Contains(contract.Pnr)
&& contract.SomeDateTime >= startTime
select contract.SomeDateTime;
}
我的问题出了什么问题
合同开始日期的类型为
System.Data.Entity.Infrastructure.DbQuery
- EF 5.0
是databaseContext
System.Data.Entity.DbContext
- 我知道这个错误。只需确保
partnerNumber
不为空即可。您正在为此参数传递null值,但Linq to entities无法将该值转换为任何有意义的值
if (partnerNumbers == null)
{
throw new ArgumentNullException("partnerNumbers");
}
另一个额外的建议:
如果
SomeDateTime
是不可为空的
,并且枚举中没有条目,那么调用Min()
时将出现异常。将SomeDateTime
转换为查询中的nullable
类型将起作用,然后当没有条目时,您将得到null。谢谢-我现在检查您的建议以供将来参考,线索是例外:LINQ/EF查询返回的是IQueryable
,而不是IEnumerable
,因此,该参数是范围中唯一明显的IEnumerable
。)(从技术上讲,IQueryable
也是一个IEnumerable
,但该错误将显示最具体的类型。)@GalacticCowboy-请在您的评论中使用“@”,就像“@GalacticCowboys”-我将了解新信息。谢谢你的IQueryable和IEnumerable。但我还不明白这个“线索”:@MikroDel这是一个一般性的评论,不一定是针对你的。“调试这样的东西很有挑战性,但也很有收获。”银河牛仔-当然,我在发布我的帖子之前已经调试过了question@GalacticCowboy-只是你可能知道的另一个用户有正确的答案)它是空的:(谢谢!)
if (partnerNumbers == null)
{
throw new ArgumentNullException("partnerNumbers");
}