c# - 无法识别查询源
问题描述
我正在尝试使用 group byTransaction
从类型列表中生成类型列表:Posting
var transactions = postings
.GroupBy(p => p.TransactionId, (key, g) => new { TransactionId = key, Postings = g })
.Select(x => new Transaction
{
TransactionId = x.TransactionId,
PostingCount = x.Postings.Count(),
TransactionState = x.Postings.First().PostingState,
CreateDate = x.Postings.First().CreateDate,
CreateUser = x.Postings.First().CreateUser
});
但是我遇到了这个错误:
无法识别查询源:ItemName = _3,ItemType = Crm.Library.Model.Posting,Expression = from Posting _3 in Convert([p])
当我对x.Postings
[First()
例如] 执行任何操作时会发生此错误。
关于如何获得预期结果的任何想法?
解决方案
我通过在使用之前将列表转换为Posting
来解决了
这个问题使用它的问题将被转换为无法理解我的 .net 方法的 SQL。对自定义类型的投影是查询的一部分,并且必须进行硬编码。IEnumerable
GroupBy
IQueryable
我的代码现在是:
var transactions = postings.AsEnumerable().GroupBy(p => p.TransactionId, (key, g) => new { TransactionId = key, Postings = g })
.Select(x => new Transaction
{
TransactionId = x.TransactionId,
PostingCount = x.Postings.Count(),
TransactionState = x.Postings.First().PostingState,
CreateDate = x.Postings.First().CreateDate,
CreateUser = x.Postings.First().CreateUser
});
推荐阅读
- c++ - 使用 QLinearGradient 绘制 QPushButton
- css - 为什么相同文件名时模块样式重叠
- java - 在 Eclipse 中自动生成的 java 文件
- html - 当我调整浏览器大小时,为什么文本会出现在框外?
- fastlane - 在 fastlane gym 中为 ios 指定配置文件时,我是否提供配置文件名称或文件路径?
- android - OkHttp 拦截器不断返回 null 并使应用程序崩溃
- javascript - es6 将两个数组与对象合并并累积数据
- python - TypeError:“int”类型的参数不可迭代(使用 lambda)
- java - 每次运行将字母转换为摩尔斯电码仅适用于一个字母
- javascript - 对象值的Javascript数组转换为多维数组