Ste*_*ven 3 c# linq datetime linq-to-entities exception-handling
我有一组错误,我从我的数据库中提取.时间存储为UTC,但我想将其转换为CST:
var errors = _errorsRepository.Errors.
Select(e => new ErrorViewModel
{
ErrorId = e.ErrorId,
Application = e.Application,
Host = e.Host,
Type = e.Type,
Source = e.Source,
Message = e.Message,
User = e.User,
StatusCode = e.StatusCode,
TimeUtc = TimeZoneInfo.ConvertTimeFromUtc(
e.TimeUtc, TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time")),
Sequence = e.Sequence,
AllXml = e.AllXml
});
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个错误:
LINQ to Entities无法识别方法'System.DateTime ConvertTimeFromUtc(System.DateTime,System.TimeZoneInfo)'方法,并且此方法无法转换为存储表达式
任何人都知道我能做些什么来解决这个问题?
LINQ to Entities将尝试将您的LINQ查询转换为SQL查询.因为您编写的部分内容无法转换为SQL,所以您收到此错误.
您可以通过首先使用ToList()将查询转换为内存中对象,然后使用LINQ to Objects获取所需结果来解决此问题:
var errors = _errorsRepository.Errors.ToList().
Select(e => new ErrorViewModel
{
ErrorId = e.ErrorId,
Application = e.Application,
Host = e.Host,
Type = e.Type,
Source = e.Source,
Message = e.Message,
User = e.User,
StatusCode = e.StatusCode,
TimeUtc = TimeZoneInfo.ConvertTimeFromUtc(
e.TimeUtc, TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time")),
Sequence = e.Sequence,
AllXml = e.AllXml
});
Run Code Online (Sandbox Code Playgroud)
请注意,这将首先从_errorsRepository获取所有错误.在这种情况下,看起来这对你来说并不重要,因为无论如何你都会得到所有这些.
归档时间: |
|
查看次数: |
2316 次 |
最近记录: |