Я пытаюсь сделать это следующим образом:< /p>
Код: Выделить всё
// Create a list of anonymous objects that combine the three fields for comparison
var subscriptionKeys = subscriptions
.Select(s => new { s.UserId, s.NotificationType, s.Channel })
.ToList();
// Fetch all existing subscriptions where the combination of UserId, NotificationType, and Channel match
var existingSubscriptions = await this.context.Subscriptions
.Where(s => subscriptionKeys.Contains(new { s.UserId, s.NotificationType, s.Channel })).ToListAsync();
System.InvalidOperationException HResult=0x80131509 Message=Выражение LINQ '__subscriptionKeys_0
.Contains(new {
UserId = StructuralTypeShaperExpression:
Micro.NotificationService.Models.Subscription
ValueBufferExpression:
ProjectionBindingExpression: EmptyProjectionMember
IsNullable: False
.UserId,
NotificationType = StructuralTypeShaperExpression:
Micro.NotificationService.Models.Subscription
ValueBufferExpression:
ProjectionBindingExpression: EmptyProjectionMember
IsNullable: False
.NotificationType,
Channel = StructuralTypeShaperExpression:
Micro.NotificationService.Models.Subscription
ValueBufferExpression:
ProjectionBindingExpression: EmptyProjectionMember
IsNullable: False
.Channel
})' не удалось перевести. Либо перепишите запрос в форме, которую можно перевести, либо явно переключитесь на оценку клиента, вставив вызов AsEnumerable, AsAsyncEnumerable, ToList или ToListAsync. Дополнительную информацию см. на https://go.microsoft.com/fwlink/?linkid=2101038.
Source=Microsoft.EntityFrameworkCore
StackTrace:
в Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.Translate(Выражение-выражение)
Как выполнить запрос такого типа? Кстати, перечисляемые подписки и подписки DbSet не являются объектами одного и того же типа. Одно из них — это сообщение, а другое — фактический объект, сохраненный в базе данных.
Могу ли я сделать что-то вроде сопоставления одного с другим и просто использовать «Содержит»?
Подробнее здесь: https://stackoverflow.com/questions/789 ... y-3-fields
Мобильная версия