2013-08-03 56 views
2

我在LINQ上真的很差,無法弄清楚一個簡單的問題。我有一個擁有控制器的MVC Web API。我在控制器中有一個方法來返回用戶輸入的註釋數據。LINQ查詢爲Web API控制器方法加入兩個表

數據結構很簡單 - 評論和用戶表與用戶ID列用作外鍵

爲了解決這個問題,我有以下的方法,其中有一個LINQ查詢做評論和用戶之間的連接表並返回一個新的擴展對象中的對象,該對象將註釋和用戶詳細信息相結合。我似乎無法從用戶表中獲取數據。有人可以幫忙嗎?

public IQueryable<CommentsWithUserDetails> GetReviewsWithUserByItem(int ID) 
    { 
     var query = from x in db.Comments 
        join y in db.Users on x.CommentsUserID equals y.UserID into z 
        where x.CommentsItemID.Equals(ID) 
        select new CommentsWithUserDetails 
        { 
         CommentsUserID = x.CommentsUserID, 
         CommentsText = x.CommentsText, 
         CommentsRating = x.CommentsRating, 
         CommentsDate = x.CommentsDate, 
         UserFirstName = y.FirstName, 
         UserLastName = y.LastName, 
         UserPictureURL = y.PictureURL 
        }; 

     return query; 
    } 
+1

您加入到一切Z,所以使用ž代替X的! – Fals

+0

實際上你也可以將''轉換成z' – Nilesh

+0

...爲什麼你甚至有where子句。 Web API允許您使用OData查詢字符串來應用where「過濾器」。 – Aron

回答

4

解決的辦法就是從查詢中刪除'into z'部分,就像那樣簡單!

正如指出的@Nilesh和@Gert阿諾德