У меня есть большая таблица, где я пытаюсь выбрать строку top 1
для каждого FK в списке.
Моя таблица имеет вид:
ChangeId | AssetId | Timestamp
1 1 123
2 2 999
3 1 3478
4 3 344
5 2 1092
ГдеChangeId
- это мое PK
, AssetId
- это мое FK
, а Timestamp
- это значение, которое я пытаюсь выбрать.
Если я попытаюсь сделать следующее:
var results =
from Asset in _context.Asset
join change in _context.Change on Asset.AssetId equals change.AssetId into potentialChange
from actualChange in potentialChange.OrderByDescending(y => y.ChangeId).Take(1)
select
{
AssetId,
Timestamp
}
Где мой ожидаемый результат будет:
[
{
AssetId: 1,
Timestamp: 3478
},
{
AssetId: 2,
Timestamp: 1092
},
{
AssetId: 3,
Timestamp: 344
}
]
Этот запрос отображает The LINQ expression could not be translated and will be evaluated locally.
, который не подходит для развертывания производства.
Запуск цикла foreach
и выбор каждого1 из 1 работает, а не является эффективным решением.
Есть ли подходящий способ для достижения вышеизложенного?