2017-01-23 6 views
0

C#のLINQクエリで次の 'on'セット定義があり、2つのDataTableをマージしようとしています。問題はmにあり、列InputValueは数値または英数字の値を含む文字列です。私はInt32.Parse(string)が私の質問を妨害していると思うので、これは悪いです。私のwhere句は、これらのケースを除外するように指定されますが、Int32.parse関数が呼び出されて実行を吹き飛ばすかどうかは関係ありません。LINQはいつ "ON"条件オブジェクトを作成しますか?

   on 
       // m 
       new { 
        FormType = m.Field<int>("FormType"), 
        ID   = (int)Int32.Parse(m.Field<string>("InputValue")) 
       } 
       equals 
       // z 
       new { 
        FormType = z.Field<int>("FormType"), 
        ID   = z.Field<int>("ZoneID") 
       } 
       where ... /* bad Int32.Parse cases would be filtered out.. */ 
+0

あなたはそれが起こるか見て実行してみましたがありますか? –

+0

varこの質問出力には「(特定のキャストは有効ではありません)」と表示されます。 –

+0

[mcve]の作成を試しましたか? –

答えて

0

あなたはが参加する前に、テーブルをフィルタリングするクエリを構築する必要があります。例えば

from l in left where IsValid(l) 
join r in right 
on /* Your above join condition */ 
... 
; 
関連する問題