2013-12-13 18 views
0

我試圖在此查詢中加入一個表(db.Students),以通過加入StudentID來獲取包含在查詢中的名和姓。我該怎麼做呢?我提出了大約50個不起作用的查詢,一個只給了我想要的一半。這是我迄今爲止的工作。Lambda Expression在我的查詢中加入另一個表的平均值

  var gradeaverages = db.Grades 
       .Where(r => r.StudentID == r.StudentID) 
       .GroupBy(g => g.StudentID, r => r.Grades) 
       .Select(g => new 
       { 
        StudentID = g.Key, 
        Rating = g.Average() 
       }); 
     var data = gradeaverages.ToList(); 
     dataGridView1.DataSource = data; 

它確實有外鍵。這裏是約束: 約束[FK_Grades_Students]外鍵([StudentID])參考文獻[DBO] [生]([StudentID])

這裏是我的表:

CREATE TABLE [dbo].[Grades] (
[GradeID] INT   NOT NULL, 
[StudentID] INT   NOT NULL, 
[Date]  NCHAR (10) NULL, 
[Grades] DECIMAL (18) NULL, 
PRIMARY KEY CLUSTERED ([GradeID] ASC), 
CONSTRAINT [FK_Grades_Students] FOREIGN KEY ([StudentID]) REFERENCES [dbo].[Students] ([StudentID]) 


CREATE TABLE [dbo].[Students] (
[StudentID] INT   NOT NULL, 
[First Name] NVARCHAR (40) NOT NULL, 
[Last Name] NVARCHAR (40) NOT NULL, 
[Phone]  NVARCHAR (24) NULL, 
CONSTRAINT [PK_Table] PRIMARY KEY CLUSTERED ([StudentID] ASC) 

我期待對於出把

StudentID名姓AverageGrade的(根據StudentID我假設)

+0

請問您的分貝有外鍵年級 - >學生呢?你使用EF嗎? – Tony

+0

嗨,歡迎來到Stack Overflow。與目前的情況相比,你可以更具體地確定你想要輸出的方式嗎? – Baldrick

+0

你的表結構是什麼樣的?請告訴我們你的代碼。 – IronMan84

回答

0

其實沒有關於分貝結構足夠的信息,但我猜你的查詢可能是這樣的:

var data = db.Students.Include("Grades") 
    .Select(x => new 
    { 
     StudentId = x.StudentId, 
     Rate = x.Grades.Avg(y => y.Mark) 
    }) 
    .ToList(); 

這個.Where(r => r.StudentID == r.StudentID)是沒有意義的,因爲你比較一些價值與自己。

或者這樣

var data = db.Grades 
    .GroupBy(x => x.StudentId) 
    .Select(x => new 
    { 
     StudentId = x.Key, 
     Rate = x.Avg(y => y.Mark) 
    }) 
    .ToList(); 
相關問題