通过不在LINQ查询中工作的顺序

时间:2013-10-13 19:27:19

标签: sql vb.net linq

我使用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()

1 个答案:

答案 0 :(得分:0)

除了ThenBy类型的运算符之外,运算符不能保证保持顺序(并且很多实际操作符不是由于实现的复杂/慢速)。

如果您希望您的查询代表Ordered集合,您应该在查询中最后调用OrderBy类型的运算符,如果您在最后使用Distinct打破订单保证,则不是特定于完全不同,可能发生在很多其他运营商身上

如果是您的样品,请按照您放置的位置删除订单,并在不同之后添加:

.OrderBy(item=>item.trip_StartDate);