当 'logLevel' 的值为“Error”时,以下 LINQ 语句中的 where 子句会导致以下错误
- 错误消息 = 执行命令定义时发生错误。有关详细信息,请参阅内部异常。
- 内部异常 = p_linq_2:字符串截断:max=3,len=5,value='Error'
如果我更改&& (logLevel == "All" || logLevel == "Error")
为&& (logLevel == "Error")
不再发生错误。
似乎为了与“All”进行比较,LINQ 会首先尝试将 'logLevel' 中的值截断为 3 个字符?
这里发生了什么?
(我正在运行 MVC 4、SQL CE 4)
IQueryable<LogEvent> list = (from a in _context.ELMAH_Error
where a.TimeUtc >= start && a.TimeUtc <= end
&& (logLevel == "All" || logLevel == "Error")
select new LogEvent
{
IdType = "guid", Id = "",IdAsInteger = 0,IdAsGuid = a.ErrorId,LoggerProviderName = "Elmah",LogDate = a.TimeUtc,MachineName = a.Host,Message = a.Message,Type = a.Type,Level = "Error",Source = a.Source,StackTrace = ""
});