2016-11-24 38 views
1

我是LINQ的新手,對於像我這樣非常習慣於普通SQL查詢的人來說,仍然面臨着挑戰。將first_value轉換爲分區by linq

我在SQL中使用子查詢的左連接和SQL服務器標準函數如FIRST_VALUE下面的查詢,可以將它翻譯成LINQ嗎? 不知道怎麼能這樣FIRST_VALUE函數可以重新寫在LINQ ..

SELECT * 
FROM dbo.Stock 

LEFT JOIN (

    SELECT distinct stockID, FIRST_VALUE(unitPrice) OVER (PARTITION BY stockid ORDER BY dbo.SalesOrder.orderDate desc) last_unit_cost, 
          FIRST_VALUE(orderDate) OVER (PARTITION BY stockid ORDER BY dbo.SalesOrder.orderDate desc) last_order_date 

    FROM dbo.SalesOrderDetail 
    JOIN dbo.SalesOrder ON SalesOrder.salesOrderID = SalesOrderDetail.salesOrderID 
    WHERE customerID = 4 
) x ON x.stockID = Stock.stockID 

回答

0

您可以使用.First()方法是從實現IEnumberable收集得到的第一個元素。

一個例子:

int[] number = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; 
var num = number.Where(n => n > 10).First(); 

Where方法眺望數陣列,並發現其中的值大於10

這將返回一個集合,只有11的值,然後我們得到第一個值將返回11.

偉大的課程是由Scott Allen的Pluralsight的Linq基礎。在哪裏可以找到其他運營商,如firstOrDefault等

+0

不幸的是,這根本不能複製SQL Server中first_value的功能。 – Fishcake