2017-04-20 7 views
0

私は2つのDataTableを持っています。LINQ - 2つのDataTableを結合し、3つの列を掛けて合計金額を得る

私はそれらに参加し、3つの列を掛け、次に3つの列を掛けて、それらの2つの列の合計を得る必要があります。純粋なSQLの場合は、group by節はなく、joinとSUMだけになります。ここまでは私がこれまで行ってきたことですが、select節で終わっていても "クエリボディはselect節またはgroup節で終わらなければなりません"(私の合計を変数に選択しようとしています)

 decimal weight = 0; 
     decimal volume = 0; 

      var results = from line in xferLinesTable.AsEnumerable() 
          join invmast in inv_mast.AsEnumerable() 
          on line.Field<int>("inv_mast_uid") equals invmast.Field<int>("inv_mast_uid") 

          let extended_weight = line.Field<decimal>("quantity_requested") * line.Field<decimal>("unit_size") * invmast.Field<decimal>("net_weight") 
          let extended_volume = line.Field<decimal>("quantity_requested") * line.Field<decimal>("unit_size") * invmast.Field<decimal>("cube") 
          into lines 

          select weight = lines.Sum(w => w.extended_weight), volume = lines.Sum(v => v.extended_volume); 
私が間違っているつもりTIAを

答えて

0

あなたは匿名型を使用して試みることができる。このような何か:?。。。

select new {weight = lines.Sum(w => w.extended_weight), volume = lines.Sum(v => v.extended_volume)}; 

はあなたがintoを使用しているあなたのコードではもう少し近くに見えましたキーワードは間違っています。groupjoinまたはselect節。このようなもの:

var results = (from line in xferLinesTable.AsEnumerable() 
       join invmast in inv_mast.AsEnumerable() 
       on line.Field<int>("inv_mast_uid") equals invmast.Field<int>("inv_mast_uid") 

       let extended_weight = line.Field<decimal>("quantity_requested") * line.Field<decimal>("unit_size") * invmast.Field<decimal>("net_weight") 

       let extended_volume = line.Field<decimal>("quantity_requested") * line.Field<decimal>("unit_size") * invmast.Field<decimal>("cube") 

       group new {weight = extended_weight,volume = extended_volume} by "A" into lines 

       select new {weightTotal = lines.Sum(x => x.weight), volumeTotal = lines.Sum(x => x.volume)}).FirstOrDefault(); 
+0

これは私が元々持っていたものですが、Visual Studioでは "クエリ本体がselectステートメントで終了する必要があります"というエラーが表示されています(squiggleは "into"キーワードになります) "ステートメントでは、Selectステートメントの "lines"リファレンスが無効になります。 – dcaparaso

+0

@dcaparaso - コードを少し見て、 – tinstaafl

+0

の愚かな質問をもっと見てみました。例えば、結果を変数に代入するか、出力の文字列としてキャストするのですか? – dcaparaso

関連する問題