2013-11-04 118 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), 
        };