2009-05-05 51 views
1

我正在使用gridview的objectdatasource从我的orm类中获取数据,但我无法通过正确的顺序获取它。 我正在使用下面的代码,但它不会按照我在下面指定的降序顺序出现。我错过了什么?使用亚音速2.1顺序不工作

<DataObjectMethod(DataObjectMethodType.Select, True)> Public Function FetchByPatID(ByVal PatientID As Object) As VisitCollection 

    Dim coll As VisitCollection = New VisitCollection().Where("PatientID", PatientID).Load() 
    **OrderBy.Desc(Visit.DosColumn)** 
    Return coll 

End Function 
+0

是Visit.DosColumn东西排序? – 2009-05-05 13:41:56

+0

什么是OrderBy.Desc? 我不是一个VB大师,但是使用LINQ`OrderBy`?如果是这样,当迭代结果时(它会返回一个新序列而不改变原始序列),LINQ的OrderBy实际上只会执行任何操作。 – 2009-05-05 13:44:59

回答

4

作为查询的一部分,对数据库执行order by。它需要在调用.Load()方法之前添加。

Dim coll As VisitCollection = New VisitCollection().Where("PatientID", PatientID).OrderByDesc(Visit.Columns.DosColumn).Load() 
2

Ranomore是正确的。您必须在实际执行命令之前指定OrderBy,因为在数据库上完成了排序。

如果您正在使用亚音速2.1,我更喜欢已经添加了新的语法,这使得查询更可读

SubSonic.Select.AllColumnsFrom(Of Visit)().Where(Visit.PatientIDColumn).isEqualTo(PatientID).OrderByDesc(Visit.DosColumn.ColumnName).ExecuteAsCollection(Of VisitCollection)()