1

我正在使用 Linq to SQL 框架(DBML 文件)使用以下查询。这是来自上一个问题 - LINQ 中的内部联接无法正常工作

Order By部分似乎不起作用。它只是按标题排序,然后按开始日期排序。我怎样才能让查询仅在开始日期之前订购?

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()
4

1 回答 1

0

除了运营商的ThenBy类型之外,运营商不能保证保持订单(实际上很多都没有,因为实现很复杂/如果他们这样做的话)。

如果您希望您的查询代表一个有序集合,您应该OrderBy在查询中最后调用运算符类型,在您的情况下,您在最后使用 Distinct 这会破坏顺序保证,它根本不特定于 distinct 并且可能发生在许多其他运营商

对于您的示例,请按您放置的位置删除顺序,然后在不同的位置添加以下内容:

.OrderBy(item=>item.trip_StartDate);
于 2013-10-15T05:31:10.180 回答