我正在尝试在lambda查询中放入条件表达式,如下所示
GetPeers(bool? isConnected = true)
{
dbContext
.peers
.Where(m => isConnected.HasValue ? m.IsConnected == isConnected.Value : true)
.ToList();
}
上面的陈述给了我
Nullable object must have a value.
例外。我不明白!我的查询有什么问题?
我想要的如果
isConnected
为null,那么它应该基于m.IsConnected == isConnected.Value
返回所有记录,否则 最佳答案
这是实体框架如何转换三元表达式的问题,它试图使用isConnected.Value
的结果创建SQL参数,但isConnected
为null,因此抛出该异常。
我的首选选项是仅在确实存在要应用的谓词的情况下才应用谓词:
IQueryable<Peer> peers = dbContext.peers;
if(isConnected.HasValue)
{
var isConnectedValue = isConnected.Value;
peers = peers.Where(m => m.IsConnected == isConnectedValue);
}
return peers.ToList();
关于c# - Lambda表达式C#中的三元运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35000415/