有人問我的T-SQL語句轉換成LINQ到EF查詢:實體框架,最大查詢
SELECT * FROM CopperPrices
where ID in
(select max(ID) as ID from copperprices group by market, pname)
我用普通的LINQ到對象的觀點並給出以下答案:
class CopperPrice
{
public int ID { get; set; }
public string Market { get; set; }
public string PName { get; set; }
}
var result = from p in copperPrices
group p by new { Market = p.Market, PName = p.PName } into g
select g.OrderByDescending(p => p.ID).First();
但它不是在EF工作,因爲下列情況除外:
的方法「第一」只能作爲最後的查詢操作。在這種情況下,而不是
,在上面的T-SQL語句轉換成一個LINQ查詢語句 考慮使用方法「FirstOrDefault」?
當您按照錯誤消息的建議進行操作時會發生什麼?如果你知道你有一個非空集合,那麼FirstOrDefault應該給出與First相同的結果,所以如果FirstOrDefault被EF接受而First不是FirstOrDefault。 – hvd 2012-07-18 12:28:35