Linq to SQL - 按问题排序

时间:2013-04-20 12:16:37

标签: c# sql linq

另一个任务块!

基本上问题是,我无法按照降序排列价格,同时保持按国家/地区分组。

我知道它可能是如此简单,但我似乎无法得到它。

任何解决方案?

谢谢!

以下是问题: " 6。允许用户按国家/地区按降序排列前五种销售产品。 (10分)"

这是我的代码:

void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        var q6 = (from t in northwind.Products
                 orderby t.UnitPrice descending
                 join o in northwind.Suppliers on t.SupplierID equals o.SupplierID
                 group t.UnitPrice by new {o.Country, t.UnitPrice} into grouped
                 select new
                 {
                     Output = grouped.Key

                 }).Take(5);                

        lbxTop5.ItemsSource = q6;
    }

1 个答案:

答案 0 :(得分:0)

  

" 6。允许用户按国家/地区按降序排列前五种销售产品。 (10分)"

我可以通过两种方式阅读。

A)获得前五大畅销产品,按国家对这5种产品进行分组。 要么 B)对于每个国家,前五大销售产品是什么?

我认为B更有意义,所以我会做那个。

此外 - 什么是最畅销的产品?这个国家与它有什么关系?我认为客户所在的国家比供应商更重要。另外 - 我认为OrderDetails中的数量可以告诉我哪些产品最畅销。注意:您的教师可能有其他想法,所以请自行使用这些假设。

from c in northwind.Customers
from o in c.Orders  //all froms except first are calls to SelectMany (one to many)
from od in o.OrderDetails //navigational properties -> no need to write explicit joins
let p = od.Product  // now we go many to one, so we don't need SelectMany
group od
  by new {c.Country, Product = p }   //anon grouping key
  into productGroup
let country = productGroup.Key.Country
let product = productGroup.Key.Product
let quantity = productGroup.Sum(od2 => od2.Quantity)
group new {Product = product, Quantity = quantity} //anon group elements
  by country
  into countryGroup
select new {
  Country = countryGroup.Key,
  Summaries = countryGroup
    .OrderByDescending(summary => summary.Quantity)
    .ThenBy(summary => summary.Product.ProductId) //tiebreaker
    .Take(5)
    .ToList()
}