我正在使用LINQ来查询数据库。我在查询中使用动态关键字。我不深入了解这种动态机制,所以我不明白发生了什么。 情况如下。以下代码部分:
var qGroup = qLocalOrd.GroupBy("new(...)", "it");
var qGroupCast = (qGroup as IQueryable<IGrouping<dynamic,dynamic>>).AsEnumerable();
var qAgg = from ordg in qGroupCast
select new {
ordg.Key,
Agg = (ordg.Key.OsID + " " + ordg.Key.NameOs + "\n" +
(ordg as IEnumerable<dynamic>).Aggregate("Составные части:\n", ...).Trim('\n') + ...)
};
工作得很好。但是当我把它添加到最后:
var qPlain = qAgg.Cast<dynamic>().AsQueryable().Select("new(Key.SubSchet, Key.NameSubSchet, ...)");
qPlain.Dump();
我收到的错误如“无字段”键“存在于类型”对象“”中。如果我使用
,它也是一样的(qAgg as IEnumerable<dynamic>)
所以在这一点上,qAgg元素的动态处理被打破了。
为什么会发生这种情况以及如何使这件事发挥作用?