2012-11-28 60 views
0

嗨總結了所有我有我的數據表,它是從我的數據庫是如下如何通過一個DataTable

Name  Total 
XYZ   20 
XYZ   20 
ABC   20 

現在我想有我的數據表中所需的列,除去重複的行如下

Name  Total 
XYZ   40 
ABC   20 

我想這linq從這裏Find duplicate and merge record into single datatable c#的正常工作,但因爲我從數據庫中有我的價值觀,我不知道該變量的類型,這樣可以有一個人幫助我,給我的解決辦法非linq方式

+0

解釋你如何訪問數據庫。很難理解你不知道列的類型。 –

+0

在linq的意義上,根據鏈接他正在寫一些東西,如'r.Field ',但由於我從數據庫中獲取數據並將其分配到數據表,我怎麼能知道'Field' – Dotnet

+0

是你確定列名是「Name」和「Total」總是?這是什麼意思?我不知道變量的類型*? – naveen

回答

1

如果你有兩個表,並要在它們下面所有的再結合是你所追求的

SELECT bothTables.Name, SUM(total) FROM 
(
    SELECT Name, SUM(total) as total FROM Table_1 GROUP BY Name 
    UNION ALL 
    SELECT Name, SUM(total) as total FROM Table_2 GROUP BY Name 
) AS bothTables 
GROUP BY bothTables.Name 
ORDER BY bothTables.Name desc 

,或者如果你想使用你的數據表(在這個例子中是dt)做它

var summedValues = from table in dt.AsEnumerable() 
        group table by table.Field<string>("Name") 
        into groupedTable 
        select new 
          { 
           Name = groupedTable.Key, 
           Total = groupedTable.Sum(x => x.Field<int>("Total")) 
          }; 
+0

而不是從sql本身獲取值是否有任何其他選項可以在datatable中自我 – Dotnet

+0

我不確定你的意思。試試我提供給你的Datatable示例。 – MVCKarl

+0

這是我所要求的,但'x.Field (「Total」))'這裏'int'我們必須聲明,而我們正在分配給datatable,但直接它不是allwing – Dotnet

0

解決方案的SQL版本是:

select Name, sum(Total) group by Name 
+1

它不是從一個獨特的表,如果我已經明確實現了這一點,將從不同的表中得到的數據將在數據表中有更多的列,但根據我的要求,我發佈了示例數據表在這裏 – Dotnet

+0

你可以b e更清楚。你想從數據庫還是從DataTable中執行此操作?還有它來自哪個表以及表的名稱是什麼? – MVCKarl

+0

我想從datatable中實現 – Dotnet