我使用Linq to SQL框架(DBML文件)使用以下查询。这来自上一个问题 - Inner Join in LINQ not working correctly。
Order By
部分似乎不起作用。它只是按标题排序,然后是startdate。如何才能通过startdate来查询订单?
Dim ds = From tds In db.tbl_tripDeptStations _
Join s In db.tbl_Stations On tds.tds_Stn Equals s.stn_ID _
Where s.stn_County.Equals(county) _
Select New With {tds.tds_Trip}
Dim result = (From t In db.tbl_Trips _
Join ds2 In ds On t.trip_ID Equals ds2.tds_Trip _
Join toop In db.tbl_TourOperators On t.tourOp_ID Equals toop.tourOp_ID _
Where t.trip_StartDate >= startDate And t.trip_EndDate <= endDate And t.trip_StartDate >= Date.Today() _
Order By t.trip_StartDate _
Select New With {t.trip_ID, t.trip_Name, t.trip_StartDate, toop.tourOp_Name}).Distinct()
答案 0 :(得分:0)
除了ThenBy
类型的运算符之外,运算符不能保证保持顺序(并且很多实际操作符不是由于实现的复杂/慢速)。
如果您希望您的查询代表Ordered集合,您应该在查询中最后调用OrderBy
类型的运算符,如果您在最后使用Distinct打破订单保证,则不是特定于完全不同,可能发生在很多其他运营商身上
如果是您的样品,请按照您放置的位置删除订单,并在不同之后添加:
.OrderBy(item=>item.trip_StartDate);