簡體   English   中英

LINQ-連接兩個數據表,將3列相乘,然后得到總計

[英]LINQ - Join two DataTables, multiply 3 columns, and then get grand total sum

我有兩個數據表。

我需要加入它們,先乘三列,再乘三列,然后得到這兩列的總和。 如果它是純SQL,將沒有group by子句,只有聯接和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。

您可以嘗試使用匿名類型。 像這樣:

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

仔細查看您的代碼。 您使用了into關鍵字錯誤。 它必須與groupjoinselect子句一起使用。 像這樣:

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();

匯總可能需要您的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM