首页 > 解决方案 > 无法识别查询源

问题描述

我正在尝试使用 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()例如] 执行任何操作时会发生此错误。

关于如何获得预期结果的任何想法?

标签: c#sqllinqnhibernate

解决方案


我通过在使用之前将列表转换为Posting来解决了 这个问题使用它的问题将被转换为无法理解我的 .net 方法的 SQL。对自定义类型的投影是查询的一部分,并且必须进行硬编码。IEnumerableGroupByIQueryable

我的代码现在是:

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
                });

推荐阅读