无法识别查询源



我正在尝试使用分组方式从类型Posting的列表生成Transaction类型的列表:

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,表达式 = 来自转换([p](中的发布_3

当我对x.Postings[例如First()] 执行任何操作时,会发生此错误。

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

我通过使用Posting列表IEnumerable在使用GroupBy使用IQueryable的问题将被转换为 SQL,这不会理解我的 .net 方法。对自定义类型的投影是查询的一部分,必须进行硬编码。

我的代码现在是:

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

最新更新