2011-08-31 103 views
4

How do I add ROW_NUMBER to a LINQ query or Entity?VB.NET - LINQ to SQL - 如何將Row_Number添加到VB.NET中的LINQ to SQL查詢中?

如何將此解決方案轉換爲VB.NET?

var start = page * rowsPerPage; 
Products.OrderByDescending(u => u.Sales.Count()) 
    .Skip(start) 
    .Take(rowsPerPage) 
    .AsEnumerable() 
    .Select((u, index) => new { Product = u, Index = index + start }); // this line gets me 

我無法移植最後一行。我一直無法找到一個VB.NET的例子。

我實際上並沒有尋找任何分頁功能,如示例提供的,只是很好的老式Row_Number(Order By X)行索引。

+0

什麼是OrderByDescending(U => u.Sales.Count的目的( ))在這個例子中?由於計數在查詢過程中沒有變化,因此除了旋轉週期之外,這實際上不會做任何事情(假定SQL沒有將其優化到執行計劃之外)。 –

+0

我不知道。這是另一個Stackoverflow帖子的代碼片段。我有興趣將行索引投影到VB.NET中的anon對象列表中 –

+0

在這種情況下,請在下面提到的Select David B中使用重載。 –

回答

6

LinqToSql無法在數據庫中執行Row_Number(Order By X)。

您發佈的C#代碼調用Enumerable.Select

msdn page爲Enumerable.Select做它針對內存的情況下,有一個vb.net的例子。


這裏是一個工作示例,演示了行索引的VB.NET中的投影:

Dim R = (
    From P In DB.Products Select P 
).AsEnumerable().Select(
    Function(Product, index) New With {index, Product} 
) 

Response.Write(R(12).Product.Doc_width.ToString()) 'Access object members 
Response.Write(R(12).index.ToString() 'Access Row Index