Linq to sql:加入和分组依据的问题
Linq to sql : Issues with Join and Group by
我在尝试实现 "search" 查询时遇到了一些问题。
我阅读了很多帖子,但找不到在我的特定情况下该怎么做。
这是我的三个表的概述,其中包含一些值:
Table 人:
Id OtherColumns...
1 ...
2 ...
3 ...
Table 职位:
Id PersonId OtherColumns...
1 1 ...
2 2 ...
3 3 ...
Table技能:
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)
};
但不知道如何取回个人和工作参考资料..."person" 和 "job" 在连接子句中定义不起作用。
我需要这三个,因为稍后我必须在我的 "search" 函数中对其执行多个 "where" 和 "order by"。
跟sk.Key.Something有关系吗?
如果有人有想法,我将非常非常感谢!
您需要按照以下方式对多列进行分组:
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)
}
我在尝试实现 "search" 查询时遇到了一些问题。 我阅读了很多帖子,但找不到在我的特定情况下该怎么做。 这是我的三个表的概述,其中包含一些值:
Table 人:
Id OtherColumns...
1 ...
2 ...
3 ...
Table 职位:
Id PersonId OtherColumns...
1 1 ...
2 2 ...
3 3 ...
Table技能:
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)
};
但不知道如何取回个人和工作参考资料..."person" 和 "job" 在连接子句中定义不起作用。 我需要这三个,因为稍后我必须在我的 "search" 函数中对其执行多个 "where" 和 "order by"。
跟sk.Key.Something有关系吗?
如果有人有想法,我将非常非常感谢!
您需要按照以下方式对多列进行分组:
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)
}