2011-06-06 52 views
1

我很困擾我遇到的一個問題。 其中,我有這個表在我的數據庫:在實體框架中獲取表格的前N行

Product (int productId, ...otherProductInfo) 
Customer (int customerId, ...otherCustomerInfo) 
SoldToData (int productId, int customerId) 

我想十大熱銷產品中使用MVC2實體框架。我怎樣才能做到這一點?

////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////// 繼kip和Pr0fess0rX的建議之後,這就是我迄今爲止所做的,它似乎工作:

using (Entities db = new Entities()) 
{ 
    var groupedProducts = (from p in db.Products 
         join s in db.SoldToData 
          on p.productId equals s.productId 
         group p by p.id 
          into ProductGroup 
          orderby ProductGroup.Count() descending 
          select ProductGroup).Take(10).ToList(); 
    List<Products> products = new List<Products>(); 
    products.AddRange(groupedProducts.Select(gp => gp.First())); 
} 

這是正確的方法?

+0

繼thekip的和Pr0fess0rX的意見,這是我迄今所做的,它似乎是工作: '使用(實體分貝=新實體()){ \t VAR groupedProducts =(從對在db.Products \t \t \t \t \t \t加入S IN db.SoldToData \t \t \t \t \t \t \t上p.productId等於s.productId \t \t \t \t \t \t羣p由p.id \t \t \t \t \t \t \t成ProductGroup \t \t \t \t \t \t \t的OrderBy ProductGroup.Count( )降序 \t \t \t \t \t \t \t選擇ProductGroup)。取(10).ToList(); \t List products = new List (); \t products.AddRange(groupedProducts.Select(gp => gp.First())); }' 這是正確的方法嗎? – Slavisa 2011-06-06 12:11:08

回答

4

如果你有一個IQueryable查詢,你可以使用排序依據等進行訂購,然後採取(10)的數據源?

+0

嗨thekip。感謝您的快速回復。我還沒有使用IQueryable。我剛剛看了一下。你能舉個例子嗎? – Slavisa 2011-06-06 11:12:11

+0

如何從數據庫中獲取單個行?例如,您如何通過ID獲得產品? 當使用實體框架(或任何其他ORM)時,我肯定會使用IQueryable來訪問我的數據庫。 – thekip 2011-06-06 11:20:53

+0

'使用(Entities db = new Entities()) var product =(from p in db.Product where p.productId == id select a).Single(); }' – Slavisa 2011-06-06 11:29:59

1
  1. 加入產品和客戶
  2. 集團他們,讓每個客戶的產品
  3. 爲了通過計數遞減計數。
  4. 以時代的前10
  5. 得到的結果產品名稱(前10名)