gpt4 book ai didi

c# - 如何在 linq to sql 中使用 TimeZoneInfo.ConvertTimeFromUtc?

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:40 26 4
gpt4 key购买 nike

我有一个名为 zeekuser 的用户表,我在其中存储与用户相关的时区信息。在使用以下代码检索 I 时,

var v = (from s in dc.UserWebSites
join zk in dc.ZeekUsers on s.aspnet_User.UserId equals zk.UserId
where s.aspnet_User.LoweredUserName.Equals(strUsername.ToLower())
select new UserWebSiteInfo
{
CreateDt = TimeZoneInfo.ConvertTimeFromUtc(s.CreateDt, TimeZoneInfo.FindSystemTimeZoneById(zk.TimeZoneID)),
LastUpdateDt = TimeZoneInfo.ConvertTimeFromUtc(s.LastUpdate, TimeZoneInfo.FindSystemTimeZoneById(zk.TimeZoneID)),
LogoImage = s.LogoImage,
Nickname = s.Nickname,
Title1 = s.Title1,
Title2 = s.Title2,
SiteID = s.SiteID.ToString(),
TemplateID = s.TemplateID.ToString(),
TemplateName = s.WebSiteTemplate.ThemeName,
IsActive = s.IsActive,
IsRedirect = s.IsRedirect,
RedirectURL = s.RedirectURL,
UPID = s.UPID.ToString(),
UserId = s.aspnet_User.UserId.ToString(),
Username = s.aspnet_User.UserName,
UserProductName = s.UserProductDetail.Nickname,
PageCount = s.UserWebSitePages.Count(),
AuthorName = s.AuthorName,
AuthorURL = s.AuthorURL
}).OrderByDescending(y => y.LastUpdateDt);
info = v.ToList();

但是我遇到了以下错误

方法“System.TimeZoneInfo FindSystemTimeZoneById(System.String)”没有支持的 SQL 转换。

每个不同的用户可以有不同的时区。我该如何解决这个问题?

最佳答案

我怀疑您能否在发送到 SQL Server 的查询中执行此操作。相反,使用 AsEnumerable 更改上下文以在 .NET 端执行最后一步:

var query = from s in dc.UserWebSites
join zk in dc.ZeekUsers on s.aspnet_User.UserId equals zk.UserId
where s.aspnet_User.LoweredUserName.Equals(strUsername.ToLower())
orderby s.LastUpdate descending
select new { Site = s, ZoneId = zk.TimeZoneID };

// Do the rest of the query in-process, so we can use time zones.
var results = (from pair in query.AsEnumerable()
let site = pair.Site
let zone = TimeZoneInfo.FindSystemTimeZoneById(pair.ZoneId)
select new UserWebSiteInfo {
// Select all your properties here
}).ToList();

这是假设 UserWebSites 中的信息不多于您将用来构造 UserWebSiteInfo 的信息;如果大量不相关的信息,您应该在初始数据库端查询中明确选择相关部分。

关于c# - 如何在 linq to sql 中使用 TimeZoneInfo.ConvertTimeFromUtc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21236046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com