0
我花了足夠的時間,所以我需要從stackoverflow的幫助。實體框架:加入方法
這裏是一個實體
Entity: Asset
Field: AssetVersionID (int) PK
Field: AssetID (int) FK
Field: ReleaseTimestamp (DateTime)
我的任務是用獨特的由assetid,並與最新的ReleaseTimestamp選擇資產。 基本上我需要在SQL函數這樣
public IQueryable<Asset> GetAssets(List<int> assetIds)
它看起來像這樣:
select a1.*
from Assets as a1
join (
select t.AssetID, max(t.ReleaseTimestamp) as ReleaseTimestamp
from Asssets as t
where AssetID in (1,2,3,4,5)
goup by AssetID
) as a2
on a1.AssetID = a2.AssetID and a1.ReleaseTimestamp= a2.ReleaseTimestamp
如何與EF和LINQ辦呢?
我嘗試這樣做:
public IQueryable<Asset> GetAssets(List<int> assetUIds)
{
IQueryable<Asset> assets = _context.Assets.Where(a => assetUIds.Contains(a.UID));
var ff = assets.GroupBy(a => a.UID, a => a,
(uid, p2) => new {KEY = uid, rel = p2.Max(p2a => p2a.ReleaseTimestamp)});
IQueryable<Asset> assets2 = _context.Assets;
var assets3 = from ass1 in assets2
join ass2 in ff on new {ass1.UID, ass1.ReleaseTimestamp} equals new {ass2.KEY, ass2.rel}
select ass1;
return assets3;
}
,但我有語法錯誤附近的 「加盟」 基本上是這樣工作的:
join ass2 in ff on ass1.UID equals ass2.KEY
,並以此作爲始終不
join ass2 in ff on new {ass1.UID, ass1.ReleaseTimestamp} equals new {ass2.KEY, ass2.rel}
: )
請幫忙!