2013-11-04 112 views
1

我有另一個問題與LINQ,所以我想要做的是創建一個最好的推銷員列表。我的sold_items表,看起來像這樣從組密鑰獲取其他屬性

[ID] 
[Name] 
[Price] 
[Sold_date] 
[Salesman_ID] 

Salesmans

[ID] 
[Login] 
[First_name] 
[Surname] 

我要總結所有的價格表中,每一個人業務員銷售,也有一個選項,按日期組它例如,最好這個月,或者本週

var query1 = from s in context.Archive 
      //join us in context.Users 
      //on s.Salesman.ID equals us.ID 
      group s by s.Salesman.ID 
      into g 
      orderby g.Sum(o => o.Price) descending 
      select new 
      { 
       Salesman_ID = g.Key, 
       Sale = g.Sum(o => o.Price), 
      }; 

工作正常,但我只得到salesman_ID,如何添加用戶First_nameSurnameSalesmans表?

回答

2

你可以做這樣的事情:

var query1 = 
    from s in context.Archive 
    group s by s.Salesman into g 
    orderby g.Sum(o => o.Price) descending 
    select new 
    { 
     Salesman_ID = g.Key.ID, 
     Salesman_First_name = g.Key.First_name, 
     Salesman_Surname = g.Key.Surname, 
     Sale = g.Sum(o => o.Price), 
    }; 

,並限制它在我的具體日期,使用這樣的:

var query1 = 
    from s in context.Archive 
    where s.Sold_date >= minDate && s.Sold_date <= maxDate 
    group s by s.Salesman into g 
    orderby g.Sum(o => o.Price) descending 
    select new 
    { 
     Salesman_ID = g.Key.ID, 
     Salesman_First_name = g.Key.First_name, 
     Salesman_Surname = g.Key.Surname, 
     Sale = g.Sum(o => o.Price), 
    }; 
+0

工作知府! :) – johns

0

改變了當前行到這一點。

select new { Salesman_ID = g.Key, Salesman_First_Name = g.Key.First_name }; 
0

您可以按多列(所有你想要檢索的列)

var query1 = from s in context.Archive 
         //join us in context.Users 
         //on s.Salesman.ID equals us.ID 
          group s by new // group by multiple columns 
          { 
          s.Salesman.Id, 
          s.first_name, 
          s.surname, 
          } into g      
         orderby g.Sum(o => o.Price) descending 
         select new 
         { 
         Salesman_ID = g.Key, 
         FirstName = g.first_name, 
         Surname = g.surname, 
         Sale = g.Sum(o => o.Price), 
        };