C# LINQ中两个表的列之和

C# LINQ中两个表的列之和,c#,sql-server,wpf,C#,Sql Server,Wpf,我在MS SQL中有两个相关的表 Example... Table A – Room RoomId RoomCost Table B – RoomItem RoomItemId ItemName ItemCost RoomId 我需要帮助编写LINQ代码,该代码将添加RoomCost,然后对ItemCost求和(如果它们具有相同的RoomId),并将结果发布到WPF文本框中。 到目前为止我已经试过了 DataclassesDataContext dc= new DataclassesData

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

Example...
Table A – Room
RoomId
RoomCost

Table B – RoomItem
RoomItemId
ItemName
ItemCost
RoomId
我需要帮助编写LINQ代码,该代码将添加RoomCost,然后对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#的初学者,请帮忙。如果我还不够清楚,就问吧。谢谢

使用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 ;

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

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

您可以通过linq内部联接和分组方式来实现这一点 参见这里的示例:和 要添加两列,请参见示例

因此,从这个链接,您的查询如下

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

请编辑您的帖子,而不是添加评论,并适当设置其格式。如果你点击“编辑”,右上角会有一个问号,这将帮助你以可读的方式提出你的问题。谢谢Jon。更正。