【发布时间】:2018-08-02 11:17:58
【问题描述】:
我有以下 Linq 代码
// query = IQueryable<DataClass>
query = query.Where(m => m.Column1.Contains(model.search.value)
|| m.DateTimeColumn2.ToString("dd.MM.yyyy").StartsWith(model.search.value));
return query.ToList() // here the error is thrown
我得到 NullReferenceException 错误
发生异常:CLR/System.NullReferenceException 异常 'System.NullReferenceException' 类型发生在 Microsoft.EntityFrameworkCore.dll 但未在用户代码中处理: '你调用的对象是空的。'在 System.Linq.Enumerable.WhereSelectEnumerableIterator
2.MoveNext()1.EnumeratorExceptionInterceptor.MoveNext()
at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor
如果我注释掉第二列的行,它可以工作
//|| m.DateTimeColumn2.ToString("dd.MM.yyyy").StartsWith(model.search.value)
model.search.value 是字符串值,我正在尝试过滤所有列。 DateTimeColumn2 在数据库中是 DateTime 数据类型,但用户输入字符串,因此我将 DateTimeColumn2 转换为字符串并尝试过滤到用户值。任何想法,我做错了什么?
【问题讨论】:
-
您是否确认
model.search.value中的任何内容都不是null? -
DateTimeColumn2是必填项,日期类型为DateTime,因此每一行都有值。
标签: linq entity-framework-core entity-framework-core-2.1