我正在使用Entity Framework。我没有足够的经验来解决任何问题。我现在面临的问题是:我有两个类,如下所示:
public class AspNetUser: NormalUser
{
[Key]
public string UserId { get; set; }
public string PIN { get; set; }
public string FullName { get { return this.LastName + " , " + this.FirstName; } }
}
public class OfferReview
{
[Key]
public string OfferReviewId { get; set; }
public string UserId { get; set; }
public string Review { get; set; }
public virtual AspNetUser User { get; set; }
}
我需要将所有OfferReview
属性绑定到AspNetUser.FullName
属性==>我试过这样:
return context.OfferReviews
.Where(It => It.OfferId == offerId)
.Include(it => it.User.FullName)
.ToList();
此处offerId
是一个函数参数。我无法展示全部功能....
我可以在linq join的帮助下轻松获得上述要求。但是我想要像lambda表达式一样的东西。
有可能吗?或者,如果可能的话,如果不可能,那么还有其他方法吗?请帮忙
答案 0 :(得分:1)
您的查询应该是:
return context.OfferReviews
.Where(It => It.OfferId == offerId)
.Include(it => it.User)
.ToList();
这将返回OfferReview
个实体的列表,每个实体都包含一个User
个对象。
现在,您可以绑定OfferReview.User.FullName
。
答案 1 :(得分:0)
你可以通过技术ViewModel
来做到这一点此ViewModel:
public class ViewModel
{
public string OfferReviewId { get; set; }
public string UserId { get; set; }
public string Review { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string FullName { get { return this.LastName + " , " + this.FirstName; } }
}
此查询:
var query = context.OfferReview
.Where(It => It.OfferReviewId == "1")
.Select(p => new ViewModel
{
OfferReviewId = p.OfferReviewId,
Review = p.Review,
UserId = p.UserId,
FirstName = p.User.FirstName,
LastName = p.User.LastName
}).ToList();