【发布时间】:2021-03-06 14:17:03
【问题描述】:
我有一个匿名对象列表,每个匿名对象都有相同的成员,我通过以下方式创建此列表:
var listWorthies = balanceWorthies.Select(w => new
{
OwnerName = w.OwnerOnInquery,
OwnerDocDate = w.OwnerDocDate,
}).ToList();
现在我只想转换每个动态对象的 OwnerDocDate 成员。 像这样:
var listWorthies = balanceWorthies.Select(w => new
{
OwnerName = w.OwnerOnInquery,
OwnerDocDate = ConvertDate(w.OwnerDocDate),
}).ToList();
给我错误
LINQ to Entities 无法识别方法 'System.String ConvertDate(System.DateTime)' 方法,并且该方法无法转换为存储表达式。
创建列表后,我也尝试了类似的方法:
foreach (dynamic Worthy in listWorthies)
{
DateTime OwnerDocDate_2 = ConvertDate(Worthy.OwnerDocDate);
Worthy.AddProperty(OwnerDocDate_2);
}
但它给了我这个错误:
'f__AnonymousType8
更新
函数ConvertDate的输出是String,我想把OwnerDocDate的类型从datetime改成string。
我该如何解决这个问题?
【问题讨论】:
-
原始字段“OwnerDocDate”的类型是什么?您能否复制/粘贴确切的异常消息?
-
我很确定它应该与 stackoverflow.com/questions/17441420/… 重复...我强烈建议 edit 发布帖子以显示“动态”项目的作用 - 到目前为止代码仅显示匿名类型.
-
@Aliz,我已经更新了我的问题。
-
没有理由在
foreach中使用dynamic和有问题的AddProperty。您需要告诉我们您使用的是什么版本的 EF:LINQ to EF 6.x / EF 2.0 / 2.1 / EF Core 3.x ? -
@NetMage,我使用的是 EF 6.0
标签: c# list linq object dynamic