return await result.Select(student => new MarkSheetsStudentByIdDto
{
Id = student.RegId,
FullName = student.FullName,
AnnualMarkSheets = student.TermOne
.Select(x => new MarkSheetDto
{
...
Comments = student.Comments.Where(x => x.StudentId.Equals(student.RegId)).Select(x => x.CommentText).ToList()
}).Union(student.TermTwo
.Select(x => new MarkSheetDto
{
...
Comments = student.Comments.Where(x => x.StudentId.Equals(student.RegId)).Select(x => x.CommentText).ToList()
})).ToList()
}).FirstOrDefaultAsync(cancellationToken);
對于上面的示例代碼片段,我在運行時收到此錯誤。
應用客戶端投影后無法轉換集合操作。考慮在最后一次“選擇”呼叫之前移動設定操作。
如果我洗掉評論,它將不會發生。誰能指導我如何解決這個問題?
uj5u.com熱心網友回復:
您必須進行客戶端后處理。如果簡單,EF Core 可以翻譯 Eager Loading 查詢。Union/Concat增加了額外的復雜性。
var rawResult = await result.Select(student => new
{
Id = student.RegId,
FullName = student.FullName,
TermsOne = student.TermOne
.Select(x => new MarkSheetDto
{
...
Comments = student.Comments.Where(x => x.StudentId.Equals(student.RegId)).Select(x => x.CommentText).ToList()
}).ToList(),
TermsTwo = student.TermTwo
.Select(x => new MarkSheetDto
{
...
Comments = student.Comments.Where(x => x.StudentId.Equals(student.RegId)).Select(x => x.CommentText).ToList()
}).ToList()
}).FirstOrDefaultAsync(cancellationToken);
if (rawResult == null)
return null;
return new MarkSheetsStudentByIdDto
{
Id = rawResult.Id,
FullName = rawResult.FullName,
AnnualMarkSheets = rawResult.TermsOne.Concat(rawResult.TermsTwo).ToList()
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510712.html
標籤:C#。网实体框架林克
