2013-05-21 14 views
0

У меня есть две связанные таблицы в MS SQL.Сумма столбцов из двух таблиц в LINQ

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#, Пожалуйста, помогите. Если я не был достаточно ясен, просто спросите. Благодаря

+0

Пожалуйста, отредактируйте ваше сообщение, а не добавьте комментарии и соответствующим образом отформатируйте его. Если вы нажмете «edit», в правом верхнем углу появится вопросительный знак, который поможет вам представить свой вопрос понятным образом. –

+0

Спасибо, Джон. Исправленный. – love

ответ

0

Как об использовании Sum() как (нету тестировал):

Если предположить, что Room.RoomCost является десятичного и RoomItem.ItemCost является десятичной, а также и myRoomId является номер комнаты, которую вы хотите подытожить:

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 ; 
+0

Спасибо, Джеймс работал как шарм. – love

0

Предполагая правильные ассоциации в номерах и комнатах.

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

Вы можете сделать это с помощью Linq внутреннего соединения и группы по смотри пример здесь: 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)) 
     }; 
Смежные вопросы