2011-08-13 12 views
0

Iコードラムダの文字列を10進数に変換するにはどうすればよいですか?

myEntities db = new myEntities(); 
    var query = from s in db.mytable select s; 
    if (!String.IsNullOrEmpty(str)) 
    { 
     query = query.Where(p => p.total == str); 
    } 

ここで、「合計」のタイプは、例えば、数字や文字を含む文字列であり、を有します"14x56xz"私は「合計」の文字列から数字部分(例えば1456)を取得し、時には、このようなコードを見て作る、負の数にそれを有効にする必要性と、十進数に変換したい:

query = query.Where(10 <= p => p.total <= 1000); 

私はそれを処理するクラスを作成しましたが、Linqでこの処理メソッドを呼び出す方法はわかりません。

答えて

1

ラムダで解析するだけです。例えば:もちろん

query = query.Where(10 <= p => decimal.Parse(p.total) <= 1000m); 

、論理的に数値が

EDIT ...でも良いだろう数字としてに格納されるように、あなたのデータモデルを向上させることができますどのような方法があるかどう:私は14x56xzから1456をLINQのEntitiesに変換するのは難しいと思う。変換や正規表現などを使用して計算カラムを公開するには、データベース側で何かできることがありますが、LINQで適切に変換される方法で表現できるかどうかはわかりません。

+0

ありがとう、Jon!申し訳ありませんが、私は自分自身を明確にしていません。 「合計」は数字と文字で構成されています。まず、「合計」フィールドを処理して小数点と比較します。私はこのフィールドを処理するためにmehthodを書いていますが、私はラムダでこのメソッドを呼び出す方法を理解していません。 –

+1

@Tom:まだ、メソッドがどのように見えるか、入力がどのように見えるのか、それとも何をしているのかを明確にしていません。また、LINQ to SQLなどを使用しているのか、それともLINQ to Objectsを使用しているのか、あなたのメソッドを使用できるかどうかという点で大きな違いがあります。 –

+0

こんにちは、Joh。私はEntityにLinqを頼りにしており、私はそれについての初心者です。私は質問を改訂しました。ありがとう! –