LINQ查询为Web API控制器方法连接两个表

LINQ查询为Web API控制器方法连接两个表,linq,c#-4.0,asp.net-mvc-4,asp.net-web-api,Linq,C# 4.0,Asp.net Mvc 4,Asp.net Web Api,我的LINQ很差,一个简单的问题也解决不了。我有一个带有控制器的MVC Web API。我在控制器中有一个方法,用于返回用户为项目输入的注释数据 数据结构很简单-注释和用户表,其中UserID列充当外键 为了解决这个问题,我有下面的方法,它有一个LINQ查询在注释和用户表之间进行连接,并在一个新的扩展对象中返回一个对象,该扩展对象结合了注释和用户详细信息。我似乎无法从用户表中获取数据。有人能帮忙吗 public IQueryable<CommentsWithUserDetails>

我的LINQ很差,一个简单的问题也解决不了。我有一个带有控制器的MVC Web API。我在控制器中有一个方法,用于返回用户为项目输入的注释数据

数据结构很简单-注释和用户表,其中UserID列充当外键

为了解决这个问题,我有下面的方法,它有一个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;
    }
public IQueryable GetReviewWithUserByItem(int-ID)
{
var query=数据库注释中的x
将x.CommentsUserID等于y.UserID的db.Users中的y加入到z中
其中x.CommentsItemID.Equals(ID)
选择new CommentsWithUserDetails
{
CommentsUserID=x.CommentsUserID,
CommentsText=x.CommentsText,
CommentsRating=x.CommentsRating,
CommentsDate=x.CommentsDate,
UserFirstName=y.FirstName,
UserLastName=y.LastName,
UserPictureURL=y.PictureURL
};
返回查询;
}

解决方案就是从查询中删除“into z”部分,是的,就这么简单


正如@Nilesh和@Gert Arnold所指出的那样,您将所有内容都加入到了z中,所以使用z而不是x!实际上,您也可以将
删除到z
中……为什么还要使用where子句呢。Web API允许您使用OData查询字符串应用where“过滤器”。只需将
删除到z
,除非您需要外部联接。谢谢各位,这就像从查询中删除到z一样简单!