【发布时间】:2015-05-08 05:19:35
【问题描述】:
我在使用 LINQ 将我从数据库收集的日期时间转换为本地时间时遇到问题。 LINQ 查询不允许我使用 ToLocalTime(),而且我似乎无法在查询之外获得任何修复来处理匿名类型的列表。
这是来自控制器的 LINQ 查询:
// GET: api/Scan
public object Getv_Update_ComplianceStatusAll()
{
var dato = DateTime.Now.AddYears(-1);
var scan = (from n in db.C_RES_COLL_NO9000AC
join s in db.v_Update_ComplianceStatusAll on n.MachineID equals s.ResourceID
join u in db.v_UpdateInfo on s.CI_ID equals u.CI_ID
join c in db.v_CICategoryInfo on u.CI_ID equals c.CI_ID
where (n.MachineID == s.ResourceID) && (u.DateRevised > dato)
group s by new { n.Name } into grp
select new
{
Name = grp.Key.Name,
StatusScan = grp.Max(t=> t.LastStatusCheckTime)
});
return scan;
}
这是我在查询之外的修复尝试:
var newScan = scan.ToList();
foreach (var s in newScan)
{
s.StatusScan = s.StatusScan.ToLocalTime();
}
return newScan;
转换有效,但返回“错误 306 属性或索引器 'AnonymousType#1.StatusScan' 不能分配给 -- 它是只读的”
那么,如何在控制器中将 UTC 转换为本地时间(在我将任何内容返回到网站之前)?
【问题讨论】:
-
您是否尝试过使用强类型变量?即:创建 ViewModel?
-
需要服务器本地时间还是客户端本地时间?
标签: c# linq datetime asp.net-web-api