我希望将表按列分组并获取计数,然后使用结果创建字典。最后一条语句返回
DbExpressionBinding需要一个带有集合ResultType的输入表达式。
错误意味着什么?
var a = context.Table;
var b = a.GroupBy(x => x.RecordType, (k, cnt) => new { RecType = k, cnt = k.Count() });
var c = b.Select(x =>
new KeyValuePair<string, Tuple<Type, int>>(
x.RecType, Tuple.Create(ObjTypes[x.RecType], x.cnt)))
.ToDictionary(x => x.Key, x => x.Value);发布于 2014-09-03 20:40:33
您的GroupBy调用稍有错误-它忽略了cnt参数。它应该写成这样:
var b = a.GroupBy(x => x.RecordType, (k, cnt) => new { RecType = k, cnt = cnt.Count() });这条异常信息是我所见过的更无益的信息之一。问题是,当您在RecordType (别名为k)的C#表达式中调用C#时,它编译得很好,因为string实现了IEnumerable<char>。不幸的是,当EF试图将该表达式转换为SQL时,它需要能够使用无法在count上工作的SQL string运算符--它需要对一系列行进行操作。这导致了您收到的某种神秘异常。
顺便说一句,分配给c的查询也不能工作-- Tuple.Create不能转换为SQL,ObjTypes[x.RecType]也不能。您需要在变量ToList上调用b,然后才能对结果进行所有额外的整形。
https://stackoverflow.com/questions/25653037
复制相似问题