我有兩個類:Property和PropertyValue。屬性具有多個值,其中每個值都是新修訂版。如何提高LINQ到EF的性能
當檢索一組屬性時,我想包含每個屬性值的最新版本。
在T-SQL中,可以非常有效地完成這樣的:
SELECT
p.Id,
pv1.StringValue,
pv1.Revision
FROM dbo.PropertyValues pv1
LEFT JOIN dbo.PropertyValues pv2 ON pv1.Property_Id = pv2.Property_Id AND pv1.Revision < pv2.Revision
JOIN dbo.Properties p ON p.Id = pv1.Property_Id
WHERE pv2.Id IS NULL
ORDER BY p.Id
「魔術師」在此查詢是加入上比條件較小,查找行,而不由左強迫的結果加入。
如何使用LINQ to EF來實現類似的功能?
我能想出的最好的事情是:
from pv in context.PropertyValues
group pv by pv.Property into g
select g.OrderByDescending(p => p.Revision).FirstOrDefault()
它不會產生正確的結果,但比其他慢10倍左右。
這個效果非常好!謝謝!! – user1104938 2011-12-19 08:28:40
也許你可以接受解決方案嗎? – Arion 2011-12-19 09:01:48