2017-11-30 23 views
0

のデータタイプを決定します。私はこのLINQクエリを持ってLINQクエリ

double[] _x = CV.trainingDataTable.AsEnumerable() 
       .Where(x => x.Field<int>("rk") == i) 
       .Select(x => x.Field<double>("years")) 
       .ToArray(); 

私の問題は、私は「RK」の値のデータ型と「年」欄が何であるかを確実に知っていないということですそれは例外を発生させます。 は、このクエリをより柔軟にするためにどのように書き直すことができるのですか? ありがとうございます。

+1

フレキシブルとはどういう意味ですか? – Default

+0

'Field 'はあなたのために機能しますか? – HimBromBeere

+3

コードをデバッグし、どのタイプの列がDataTableにあるのかを確認しますか? – Magnus

答えて

1

あなたはフレキシブルだと言いますが、エラーが発生しやすくなります。 Field-extension methodはタイプセーフです。 System.Object(実際にはDataRowが格納する)で回り込むのではなく、正しいタイプで使用することができます。しかし、あなたはそれがどんなタイプであるかを知る必要があります。

上記の理由から、私はあなたにそれを回避する方法を示しません(foo。ToStringを使用して、あなたの希望するタイプに解析する)。それはあなたがどんなタイプであるか知っているべきです。

あなたは、テーブルのColumns経由types of the DataColumnを検出することができます。

Type theTypeOfTheColumnRK = CV.trainingDataTable.Columns["rk"].DataType; 
Type theTypeOfTheColumnYears = CV.trainingDataTable.Columns["years"].DataType; 

あなたはタイプを決定するために、デバッガ、例えばこれらのステートメントを実行する可能性があります。

関連する問題