[英]How do I order a group result with a list, in Linq?
此linq為我提供了所有房間,並按rateCode進行了分組。
var results = (from r in dcCrs.CRS_RateTypePerReservation
where r.Reservation_id_fk == reservation.Reservation_id_pk
&& r.RoomTypeCenter_id_fk != null
&& r.Price != 0
group r.RoomTypesPerCenter.RoomTypes.Code by r.CRS_RateTypes.Name into g
select new { rateCode = g.Key, roomName = g.ToList() });
但是現在我必須通過數據庫中一個名為Order的Integer對結果進行排序:
var results = (from r in dcCrs.CRS_RateTypePerReservation
where r.Reservation_id_fk == reservation.Reservation_id_pk
&& r.RoomTypeCenter_id_fk != null
&& r.Price != 0
orderby r.Order ascending
group r.RoomTypesPerCenter.RoomTypes.Code by r.CRS_RateTypes.Name into g
select new { rateCode = g.Key, roomName = g.ToList() });
這僅訂購房間的名稱,而不訂購兩個房間的名稱。
數據:
Order Rates RoomType
5 PER DBL
30 PER IND
15 BAR IND
10 BAR DBL
20 BAR URB
它應該給出此結果,因為第一個是5和30(PER),然后是10、15和20(BAR):
{rateCode = PER, roomName = {DBL, IND} }
{rateCode = BAR, roomName = {DBL, IND, URB} }
但這返回了我:
{rateCode = BAR, roomName = {DBL, IND, URB} }
{rateCode = PER, roomName = {DBL, IND} }
感謝您的任何建議。
數據庫GROUP BY
查詢結果的鍵順序未定義。
您需要在分組后應用排序,例如
var results =
(from r in dcCrs.CRS_RateTypePerReservation
where r.Reservation_id_fk == reservation.Reservation_id_pk
&& r.RoomTypeCenter_id_fk != null
&& r.Price != 0
group r by r.CRS_RateTypes.Name into g
orderby g.Min(r => r.Order)
select new
{
rateCode = g.Key,
roomName = (from r in g orderby r.Order select r.RoomTypesPerCenter.RoomTypes.Code).ToList()
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.