【发布时间】: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