1

以下の LINQ ステートメントの where 句は、'logLevel' の値が "Error" の場合に次のエラーを引き起こします。

  • エラー メッセージ = コマンド定義の実行中にエラーが発生しました。詳細については、内部例外を参照してください。
  • 内部例外 = p_linq_2 : 文字列の切り捨て: max=3、len=5、value='Error'

に変更&& (logLevel == "All" || logLevel == "Error")すると&& (logLevel == "Error")、エラーは発生しなくなりました。

「すべて」との比較を行うために、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