为什么可以为null的int使用linq发出此错误?
public void test(int? variableId)
{
var date = _dbContext.Set<MyEvent>()
.Where(x => x.Calendar.id == (variableId.HasValue ? variableId : x.Calendar.id))
.ToList();
}
答案 0 :(得分:0)
你应该把它写成(variableId.HasValue?variableId。 Value :x.Calendar.id)
假设variableId为null,那么你有一个非常有趣的表达式.Where(x =&gt; x.Calendar.id == x.Calendar.id)意味着 - 所有记录。你的代码的问题是你的原始表达式最有可能导致客户端过滤而不是sql端过滤。最好像以下一样重写它:
var date = variableId.HasValue
?_dbContext.Set<MyEvent>().Where(x => x.Calendar.id == variableId.Value))
:_dbContext.Set<MyEvent>();