【问题标题】:LINQ query JOIN two tables for Web API controller methodLINQ 查询 JOIN 两个表的 Web API 控制器方法
【发布时间】:2013-08-03 15:10:06
【问题描述】:

我在 LINQ 方面真的很差,无法解决一个简单的问题。我有一个带有控制器的 MVC Web API。我在控制器中有一个方法可以返回用户为项目输入的 cmets 的数据。

数据结构简单——以 UserID 列作为外键的 Comments 和 User 表

为了解决这个问题,我有以下方法,它有一个 LINQ 查询来在 Comments 和 User 表之间进行连接,并在结合了 Comments 和 User 详细信息的新扩展对象中返回一个对象。我似乎无法从用户表中获取数据。有人可以帮忙吗?

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;
    }

【问题讨论】:

  • 你把所有东西都加入了z,所以用z代替x!
  • 你也可以删除into z
  • 实际上......为什么你甚至有 where 子句。 Web API 允许您使用 OData 查询字符串来应用 where“过滤器”。
  • 只要删除into z,除非你想要一个外连接。
  • 谢谢大家,就像从查询中删除 into z 一样简单!

标签: linq c#-4.0 asp.net-mvc-4 asp.net-web-api


【解决方案1】:

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

正如@Nilesh 和@Gert Arnold 指出的那样

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 2012-07-09
    • 1970-01-01
    • 2017-12-23
    相关资源
    最近更新 更多