LINQ尝试将变量值截断为比较长度
当“logLevel”的值为“error”时,下面LINQ语句中的where子句会导致以下错误LINQ尝试将变量值截断为比较长度,linq,sql-server-ce,Linq,Sql Server Ce,当“logLevel”的值为“error”时,下面LINQ语句中的where子句会导致以下错误 错误消息=执行命令定义时出错。有关详细信息,请参见内部异常 内部异常=p_linq_2:字符串截断:max=3,len=5,value='Error' 如果我将&(logLevel==“All”| | logLevel==“Error”)更改为&(logLevel==“Error”)则不再发生错误 似乎为了与“All”进行比较,LINQ试图先将“logLevel”中的值截断为3个字符 这是怎么回事
- 错误消息=执行命令定义时出错。有关详细信息,请参见内部异常
- 内部异常=p_linq_2:字符串截断:max=3,len=5,value='Error'
&(logLevel==“All”| | logLevel==“Error”)
更改为&(logLevel==“Error”)
则不再发生错误
似乎为了与“All”进行比较,LINQ试图先将“logLevel”中的值截断为3个字符
这是怎么回事
(我正在运行MVC4、SQLCE4)
IQueryable list=(来自于一个in\u context.ELMAH\u错误
其中a.TimeUtc>=start&&a.TimeUtc Linq to这是什么?Linq to entities(\u context是DBContext对象)…我应该发布更多代码吗?(DBContext类、ELMAH\u错误类等)您是否犯了错误,是不是应该是a.logLevel
?如果不是,您应该评估c#code中logLevel
的值,并决定是否执行查询。logLevel是上述代码所在方法的参数
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 = ""
});