2

Enumerable<DataRow>null 許容 Int32 フィールドで LINQ の OrderBy メソッドを使用して、型のコレクションを並べ替えようとしています。このフィールドの値の一部が null であるため、Visual Studio は「オブジェクトは Int32 型でなければなりません」というメッセージとともに System.ArgumentException をスローします。問題のあるコード行は次のとおりです。

collection1 = collection1.OrderBy(row => row["Column1"]); 

ここで、Column1 は null 許容の Int32 フィールドで、変数collection1は次のように宣言されます。

IEnumerable<DataRow> collection1;

nullを無視するように上記の行を書き直す方法はありますか?

4

4 に答える 4

7

三項条件演算子を使用できます。

collection1 = collection1.OrderBy(row => 
  row["Column1"] != null ? row["Column1"] : low_priority_indicator); 

low_priority_indicatorは、標準の下位 (優先度に関して) の値を表す整数です。それ以外の場合は、結果のコレクションから完全に除外する場合は、注文するnullに値を除外できます。

于 2013-02-12T12:08:25.713 に答える
4

これを試して:

collection1.OrderBy(row => row.Field<int?>("Column1")); 
于 2013-02-12T12:24:20.990 に答える
0

次のことを試してください。

collection1 = collection1.Where(row => row["Column1"] != null).
    OrderBy(row => row["Column1"]);
于 2013-02-12T12:08:05.447 に答える
0

これは値を無視します-これを試してください:

collection1 = collection1
                .Where(c => c["Column1"].HasValue)
                .OrderBy(row => row["Column1"]);
于 2013-02-12T12:08:38.010 に答える