gpt4 book ai didi

c# - Linq 无法翻译 ToShortDateString()

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:23 29 4
gpt4 key购买 nike

能否请您告诉我如何解决下面的查询。 LINQ 将我的日期格式化为写出的示例:2015 年 8 月 8 日。我需要 8/8/2015。我尝试的每一次尝试都会给我不同的错误信息。我究竟做错了什么。

var orgData = (from d in db.tbl_FormsSubmittedValues
where d.SiteID == _siteID
& d.FormID == _formID
& ((d.tbl_FormsSubmitted.UserID == _userID && _viewOwnOnly) || !_viewOwnOnly)
& ((_search != "" && d.Value.Contains(_search)) || _search == "")
select new
{
d.FormSubmissionID,
Value = d.ValueDate.HasValue ? d.ValueDate.Value.ToShortDateString(): d.ValueLong != null ? d.ValueLong : d.Value,
d.FieldID,
d.FormID,
d.SiteID,
d.tbl_FormsSubmitted,
d.tbl_FormsSubmitted.UserID,
}).ToList();

原始行是给我写出日期而不是 mm/dd/yyyy

 Value = d.ValueDate != null ? d.ValueDate.ToString() : d.ValueLong != null ? d.ValueLong : d.Value,

问题行:

Value = d.ValueDate.HasValue ? d.ValueDate.Value.ToShortDateString(): d.ValueLong != null ? d.ValueLong : d.Value,

错误:

Could not translate expression 'd.ValueDate.Value.ToShortDateString()' into SQL and could not treat it as a local expression.

最佳答案

创建一个新的匿名对象的替代方法是创建一个新类型的对象(例如 select new Submission() { ... }),它公开一个只读属性以呈现一个简短的日期。这可能会为这样一个简单的操作增加一些开销,但它提供了一些灵 active (您可以稍后格式化更多字段)和性能(任何额外的查询或过滤操作都是针对数据库而不是在内存中执行的)。

或者,您可以将工作向下推到表示层。让负责向用户显示数据的代码处理转换或显示短日期,并保持您的数据/业务层精简并对其他解释开放。这将使您不必返回并更改查询或修改您的 POCO 以适应日期格式首选项的更改。例如,如果您有另一个人希望日期显示为 YYYY-dd-MM 怎么办?

关于c# - Linq 无法翻译 ToShortDateString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31837943/

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