2つの列に基づいたDataTable、ソート私は(MM/DD/YYYYの形式で日付)のようなテーブルを持っている方も大きく
ID blocked_date admincanceldate
.................................
1 06/06/2017 08/06/2017
1 07/06/2017 DBNULL
1 04/06/2017 09/06/2017
1 DBNULL 03/06/2017
1 02/06/2017 01/06/2017
私は条件を以下に基づいてでソートしたい、
blocked_dateの場合admincanceldateより大きい場合はblocked_date、そうでない場合はadmincancelate(より大きい日付)、それより小さい日付です。私はVB.Net
を使用していますし、私のクエリは
dtCorporateDetails = dtCorporateDetails.AsEnumerable() _
.OrderByDescending(If((ConvertToDate(Function(c) c.Field(Of Object)("admincanceldate"))) > (ConvertToDate(Function(c) c.Field(Of Object)("blocked_date"))), (ConvertToDate(Function(c) c.Field(Of Object)("admincanceldate")))), (ConvertToDate(Function(c) c.Field(Of Object)("blocked_date")))) _
.ThenByDescending(If((ConvertToDate(Function(c) c.Field(Of Object)("admincanceldate"))) > (ConvertToDate(Function(c) c.Field(Of Object)("blocked_date"))), (ConvertToDate(Function(c) c.Field(Of Object)("blocked_date"))), (ConvertToDate(Function(c) c.Field(Of Object)("admincanceldate"))))) _
.CopyToDataTable()
と
Private Function ConvertToDate(ByVal obj As Object) As Nullable(Of Date)
Dim retDate As Date = Nothing
If Not IsDBNull(obj) Then
retDate = CDate(obj)
End If
Return retDate
End Function
ですが、私は型パラメータ(秒の誤差
データ型(複数可)を取得しています
)内の拡張メソッド 'Public 関数OrderByDescending(Of TKey)(keySelector As System.Func(Of(System.Data.DataRow、TKey)、コンストラクター System.Collections.Generic.IComparer(Of TKey))As System.Data.OrderedEnumerableRowCollection(Of System.Data.DataRow) 'System.Data.EnumerableRowCollectionExtensionsで定義されている 'は、これらの引数から推測される にはなりません。明示的にデータ型を指定すると、 がこのエラーを修正する可能性があります。
どうすれば解決できますか?
タグが付いているのでC#からも変換できます。
私はこの問題は、あなたがOrderByDescending' 'でソート機能として本来のIf'' VB.NETを使用しようとしているということだと思いますが、これはVBの型推論では動作しません。ラムダ関数の中に入れてみてください。 – Craig