【问题标题】:Sum of Columns of Two Tables in LINQLINQ中两个表的列总和
【发布时间】:2013-05-21 02:22:26
【问题描述】:

我在 MS SQL 中有两个相关的表。

Example...
Table A – Room
RoomId
RoomCost

Table B – RoomItem
RoomItemId
ItemName
ItemCost
RoomId

我在编写 LINQ 代码时需要帮助,该代码将添加 RoomCost 然后 Sum ItemCost(如果它们具有相同的 RoomId)并将结果发布到 WPF 文本框中。 到目前为止我已经尝试过

DataclassesDataContext dc= new DataclassesDataContext();
var RoomAmount = (from dbo in dc.Room select dbo.RoomCost).Single();
var ItemAmount = (from itm in dc.RoomItem select itm.ItemCost).Single();
decimal RmAmount = Convert.ToDecimal(RoomAmount);
decimal ItmAmount = Convert.ToDecimal(ItemAmount);
decimal TAmount=RmAmount+ItmAmout;
txtTotalAmount.Text=TAmount

我是 C# 的初学者,请帮助。如果我还不够清楚,请问。谢谢

【问题讨论】:

  • 请编辑您的帖子而不是添加 cmets,并适当地格式化它。如果您点击“编辑”,右上角会有一个问号,可以帮助您以可读的方式提出您的问题。
  • 谢谢乔恩。已更正。

标签: c# sql-server wpf


【解决方案1】:

使用 Sum() 怎么样(还没有测试过):

假设 Room.RoomCost 是 十进制 并且 RoomItem.ItemCost 也是 十进制 并且 myRoomId是你要总结的房间id:

var roomAmount = dc.Room.Single(r => r.RoomId == myRoomId).RoomCost;
var itemAmount = dc.RoomItem.Where(i => i.RoomId == myRoomId).Sum(r => r.ItemCost);

txtTotalAmount.Text= roomAmount + itemAmount ;

【讨论】:

    【解决方案2】:

    假设房间和房间项目的关联正确。

    var foo = from room in dc.Room
              select new { room , TotalCost = room.RoomCost + room.RoomItems.Sum(item => item.ItemCost) };
    var bar = foo.Single(room => room.RoomId == myRoomId);
    

    【讨论】:

      【解决方案3】:

      您可以通过 linq inner join 和 group by 来做到这一点 请参阅此处的示例:LINQ: Using INNER JOIN, Group and SUM 和 enter link description here 并添加两列参见示例http://forums.asp.net/t/1728644.aspx/1

      所以从这个链接你的查询就像

      var total = from room in dc.Room
              join item in dc.RoomItem on room.RoomID equals item.RoomID
              group item by room.RoomID into g
              select new { 
                  RoomID = room.RoomID, 
                  RoomCost = (room.RoomCost + g.Sum(t => t.ItemCost))
              };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-11
        • 1970-01-01
        • 2017-02-16
        • 2011-01-26
        • 1970-01-01
        • 1970-01-01
        • 2015-06-25
        相关资源
        最近更新 更多