我在數據集中有2個數據表。一個表有一個名爲CostTypes的列表。只是一個Id和說明字段。LINQ和2個數據表
另一個數據表是主表,有許多記錄,其中一列是成本類型。將會有在這個數據表中沒有引用的成本類型。這個數據庫中有另一列叫做成本。
我想要做的是按成本類型獲得總成本的總結。但我希望列出的所有成本類型的任何值都不在主表中爲零。
COSTTYPE表
Id, Description
1,Marketing
2,Sales
3,Production
4,Service
Master table
Id, Cost, CostTypeId
1,10,1
2,120,1
3,40,3
所以我想看看在確定年代的結果(如果可能的話),所以我可以綁定到datagridview的
Marketing 130
Sales 0
Production 40
Service 0
感謝幫助大家,這是我從答案中得出的結論 - 任何人都可以提出任何改進?
另外我怎樣才能將查詢1中的結果轉換爲數據?
var query1 =
from rowCT in costTypes.AsEnumerable()
from rowSTD in stdRates.AsEnumerable()
.Where(d => d.Field<int?>("CostTypeId") == rowCT.Field<int?>("CostTypeId"))
.DefaultIfEmpty()
group new { row0 = rowCT, row1 = rowSTD }
by rowCT.Field<string>("Description") into g
select new
{
g.Key,
Cost = g.Sum(x => x.row1 == null ? 0 : x.row1.Field<decimal>("Cost")),
TotalCost = g.Sum(x => x.row1 == null ? 0 : x.row1.Field<decimal>("TotalCost")),
TotalHours = g.Sum(x => x.row1 == null ? 0 : x.row1.Field<decimal>("TotalHours")),
TotalLabourCost = g.Sum(x => x.row1 == null ? 0 : x.row1.Field<decimal>("TotalLabourCost"))
}
;
在我的答案我有代碼,演示如何創建一個'DataTable'作爲結果。 – 2012-03-30 13:18:21