私は、次のLINQ文を持っている:両方、C#Convert.ToDouble(値)
Items = Items.Where(p => p.LeadDatas.Any(
q =>
q.LeadField.Name == descriptor.Name &&
Convert.ToDouble(q.Value) == Convert.ToDouble(value)));
q.Value
は、二重の文字列値であり、value
も、二重の文字列値であり、これらは、平等のために比較できるように倍に変換する必要がありました。私はこのLINQ文の上でデバッグするときに
、私は次のSQLExceptionを取得しています:
をフロートするデータ型varchar型の変換
エラーは、私は私が行うことを許可されていない理由はわかりませんこれは、しかし、私は修正が何であるか疑問に思っています、私は私の2つの値をここで平等のために比較する必要があります。私はローカル変数に出
Convert.ToDouble(value)
を抽出します、で開始する
それはSQLでそれを実行しようとしている可能性があります - それは100%確実です(エラーメッセージを参照) – Jeff
@ JeffN825:私の指摘は、データベース内のデータを変換しようとするのではなく、問題です。明確にするために編集します。 –
私自身の教育のために、なぜ倍を比較するのが悪いですか?年齢の古い "小数"の問題のために? (http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems) – Jeff