2016-05-17 9 views
1

データベースクエリから2つの値(文字列)を追加しようとしています。私はそれらを解析し、データベースクエリでそれらを追加しようとしていますが、私はできません。文字列を10進数で解析し、S​​QLクエリで合計する

DB値:

Amount1:  -400 (string) 
Amount2:  400 (string) 

私は0する(-400)+(400)を必要としています。

var Result = Model.Fin.Where(*some conditions*).Sum(a => decimal.TryParse(a.Amount)); 

はあなたが助けてくださいことができます:

私のコードは次のようです。

答えて

0

TryParseは、解析する値と共にoutパラメータが必要で、その戻り値も小数点ではなくboolです。

var Result = Model.Fin 
    .Where(*some conditions*) 
    .AsEnumerable() // you'll need this as well (Linq to Sql doesn't support the next sum) 
    .Sum(a => { 
    decimal v; 

    if (!decimal.TryParse(a.Amount, out v)) 
     return 0.0M; // a.Amount can't be decimal, say, "bla-bla-bla" 

    return v; 
    } 

のLINQ以降のSQL can'へ:

は、あなたが使用する必要があります有効な構文は長く非効率的なコードを置くためにあなたが持っているTryParseの場合

var models = Model.Fin.Where(some conditions).ToList(); 
var Result = models.Sum(a => decimal.Parse(a.Amount)) 
+0

それでもうまくいきません。 – moonyy88

+0

エラーが発生していませんか? –

+0

EntityFramework.SqlServer.dllで 'System.NotSupportedException'型の例外が発生しましたが、ユーザーコードで処理されませんでした。追加情報:LINQ to Entitiesが 'System.Decimal Parse(System.String)'メソッドを認識しません。メソッドはストア式に変換することはできません – moonyy88

0

ですdecimal.TryParseでクエリを作成すると、Linq to Objects - AsEnumerable()に変更する必要があります。データとクライアント側の合計

関連する問題