私は必要なものを提供するSQLビューを作成しました。基本的には、職位ビレッティングシステムであり、認定されたポジション数が記入されている(または割り当てられている)ことを示しています。今LINQクエリにカウント列を追加する結合テーブルに基づいて
SELECT Companies.Name AS Company, Grades.Name AS Grade, Series.Name
AS Series, Positions.Authorized, COUNT(People.PersonId) AS Assigned
FROM Companies INNER JOIN
Positions ON Companies.Id = Positions.CompanyId INNER JOIN
Series ON Positions.SeriesId = Series.Id INNER JOIN
Grades ON Positions.GradeId = Grades.Id INNER JOIN
People ON Positions.CompanyId = People.CompanyId AND
Positions.SeriesId = People.SeriesId AND Positions.GradeId = People.GradeId
GROUP BY Companies.Name, Grades.Name, Series.Name, Positions.Authorized
私が行うことができるようにしたいのですがどのようなLINQクエリでこれを再現しています。私はそれが必要なところにほとんど手に入れました。しかし、私は人テーブルに基づいて最後にカウントされた列を追加する方法を見つけることができません。あなたが提供することができます任意の助けを事前に
var query = from a in db.Companies
join b in db.Positions on a.Id equals b.CompanyId
join c in db.Series on b.SeriesId equals c.Id
join d in db.Grades on b.GradeId equals d.Id
join e in db.People on new { b.CompanyId, b.SeriesId, b.GradeId } equals new { e.CompanyId, e.SeriesId, e.GradeId }
group a by new { CompanyName = a.Name, GradeName = d.Name, SeriesName = c.Name, b.Authorized, e.PersonId } into f
select new { Company = f.Key.CompanyName, Grade = f.Key.GradeName, Series = f.Key.SeriesName, f.Key.Authorized, Assigned = /* needs to be Count(People.PersonId) based on last join */)};
ありがとう:
は、ここに私の現在のLINQクエリです!