以前,当我使用 .NET 8 时,我可以在
String.Join
语句中使用 Select
来表示 IQueryable
,如以下代码所示:
var receiveTransactions = await repository.Context.Set<ReceiveTransaction>()
.Select(x => new ThirdPartyTransactionReportModel
{
Date = x.Created,
Customer = string.Join(" - ", x.CustomerIdentity.Customer.Name, x.CustomerIdentity.Customer.Type, x.CustomerIdentity.Customer.Nationality.Name),
})
.ToListAsync();
但是,升级到.NET 9后,我遇到了错误:
表达式树不能包含引用结构或受限类型“ReadOnlySpan”的值。
请向我提供任何解决方案或替代方案来解决此问题。
这是一个已知问题,有几个相关提及:
要解决此问题,请尝试显式指定数组重载变体:
var receiveTransactions = await repository.Context.Set<ReceiveTransaction>()
.Select(x => new ThirdPartyTransactionReportModel
{
Date = x.Created,
Customer = string.Join(" - ", new[] { x.CustomerIdentity.Customer.Name, x.CustomerIdentity.Customer.Type, x.CustomerIdentity.Customer.Nationality.Name }),
})
.ToListAsync();