2012-10-24 125 views
4

我有这个疑问这是我从6桌它得到的日期,评分,评分者,类名,成绩,学科检索。转换SQL查询连接到LINQ

SELECT r.date, u1.username as rated, u2.username as rater, c.name as classname, s.ratings, sbj.name 
FROM Ratings r 
INNER JOIN Users u1 ON u1.userid = r.rated 
INNER JOIN Users u2 ON u2.userid = r.rater 
INNER JOIN ClassMembers cm ON u1.userid = cm.userid 
INNER JOIN Class c ON cm.teamid = c.teamid 
INNER JOIN Scores s ON s.ratingsid = r.ratingsid 
INNER JOIN Subjects sbj ON sbj.subjectid = s.subjectid 

这导致

date   | rated | rater | teamname | score | subject 
10/12/2012 john  mike  teamA  9  Math 
10/09/2012 john  mike  teamA  9  Science 
10/09/2012 john  abra  teamA  5  Math 
10/09/2012 john  abra  teamA  5  Science 

我有这个查询转换为LINQ表达式。 我很难将我的sql查询转换成LINQ。任何帮助,将不胜感激。

回答

3

你可以做到这一点通过加入:

var results = from r in Ratings 
       join u1 in Users on u1.userid = r.rated 
       join u2 in Users on u2.userid = r.rater 
       join cm in ClassMembers on cm.userid = r.rated 
       join c in Class on cm.teamid = c.teamid 
       join s in Scores on s.ratingsid = r.ratingsid 
       join sbj in Subjects on sbj.subjectid = s.subjectid 
       select new 
        { 
         Date = r.date, 
         Rated = u1.username, 
         Rater = u2.username, 
         ClassName = c.name, 
         Ratings = s.ratings, 
         Subject = sbj.name 
         }; 
+0

谢谢!我尝试过这样的事情之前,我一定是换了等于。但这是完美的!你是男人! –

+0

你知道如何将这些按ClassName c.name分组吗? –

+0

@shinratensei只需在其中添加group by子句.. –

0

选择不同SUBCAT为CATID,CatName,CATID为SUBCAT,从 (选择a.CatName,b.CatName作为子目录,a.CatID为SUBCAT子目录,b.CatID 从Iris_CategoryMaster一个内连接Iris_CategoryMaster b关于a.CatID = b.ParentID其中b.Status = 1)为x