【问题标题】:Linq to sql : Issues with Join and Group byLinq to sql:加入和分组的问题
【发布时间】:2015-03-04 17:09:57
【问题描述】:

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

桌人:

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 子句中定义的“人员”和“工作”不起作用。 我需要这三个,因为我必须稍后在我的“搜索”功能中对其执行多个“位置”和“排序依据”。

sk.Key.Something有关系吗?

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

【问题讨论】:

    标签: c# linq join group-by


    【解决方案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)
            }
    

    【讨论】:

    • 非常感谢,我不知道我必须按技能、人员和工作分组。效果很好,你救了我;)
    • @Flash_Back 很高兴为您提供帮助,还有一件事您可以从 group by 中删除 Skill.Value 我认为是因为我们正在对技能进行分组
    猜你喜欢
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    相关资源
    最近更新 更多