1

当 '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 = ""
    });
4

0 回答 0