我是C#的初学者。我对SQLstatement很熟悉,但是对LINQ并不满意。现在,我需要使用LINQ语句查询booking.PackageId
和AvG(booking.Rating)
Grouping by booking.Package
。(我需要根据不同显示平均评分PackageID
)。
我想使用列表视图显示所有信息
<asp:ListView
ID="lvBookings" runat="server"
DataKeyNames="BookingId"
ItemType="TravelPlannerSystem.Models.Booking"
SelectMethod="GetFeedbacks">
这是我的代码背后 GetFeedbacks
public IQueryable<Booking> GetFeedbacks()
{
var db = new TravelPlannerContext();
var query = from booking in db.Bookings
group booking by booking.PackageId into grouping
select new {
PackId = grouping.Key,
AverageRating = grouping.Average(ed => ed.Rating)
};
return query;
}
它一直给我错误,我已经在线搜索了2天。我真的不知道该如何做出改变。有人可以帮忙吗?
原因是您的函数期望返回值为,IQueryable<Booking>
但您正在返回IQueryable<AnonymousType>
:您的投影(select
零件)正在创建一个new {}
,它是带有PackId
和的匿名类型AverageRating
。
此新类型不是该Booking
类型,因此是失败的原因。
您应该做的是,您不能返回匿名类型(并且我认为在此处使用动态方法不是一个好习惯)是创建一个新类,然后:
public IQueryable<YourClass> GetFeedbacks()
{
return from booking in (new TravelPlannerContext()).Bookings
group booking by booking.PackageId into grouping
select new YourClass // Now you are projecting the expected type
{
PackId = grouping.Key,
AverageRating = grouping.Average(ed => ed.Rating) ?? 0
};
}
查看重定值和投影如何属于同一类型
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句