Linq to sql:Join和Group by的问题

时间:2015-03-04 17:09:58

标签: c# linq join group-by

我在尝试实现“搜索”查询时遇到了一些麻烦。 我阅读了很多帖子,但在我的特定情况下找不到怎么做。 这是我的三个表概述,其中包含一些值:

表人:

Id OtherColumns...
1  ...
2  ...
3  ...

表格工作:

Id PersonId OtherColumns...
1  1        ...
2  2        ...
3  3        ...

表技巧:

PersonId Discipline Value OtherColumns...
1        0          1    ...
1        2          2    ...
1        1          3    ...
2        2          4    ...
2        6          5    ...
2        3          6    ...
3        4          7    ...
3        7          8    ...

我想:

Person Job TotalValues
1       1  6 (1+2+3)
2       2  15 (4+5+6)
3       3  15 (7+8)

我试过了:

var result =
    from job in db.Job
    join person in db.Person
    on job.PersonId equals person.Id
    join skill in db.Skill
    on person.Id equals skill.PersonId
    group skill by skill.Value into sk
    select new
    {
        Person = ???
        Job = ???
        TotalValues = sk.Sum(s => s.Value)
    };

但是不知道如何找回人和工作引用......在join子句中定义的“person”和“job”不起作用。 我需要这三个,因为我必须在我的“搜索”功能中执行多个“where”和“order by”。

是否与 sk.Key.Something 有关?

如果有人有想法,我会真的非常感谢!

1 个答案:

答案 0 :(得分:1)

您需要按照以下方式对多个列进行分组:

group skill by new 
          { 
             skill.Value,
             person.PersonId,
             job.JobId
          } into g
   select new
        {
           Person =g.Key.PersonId,
           Job = g.Key.JobId,
           TotalValues = g.Sum(x=>x.Value)
        }