2012-10-26 137 views
0

我從表中讀取數據,並綁定到一個標籤,並在GridView掉落下來,但我想篩選從表中重複的名字,並指定相應日期的DDL怎麼能做到這一點?或者還有其他的選擇嗎?避免重名

private DataSet get() 
    { 
     string sql = "select Id,Name,RunDate from Historytable"; 
     SqlDataAdapter da=new SqlDataAdapter(sql,con); 
     DataSet ds=new DataSet(); 
     da.Fill(ds); 
     return ds; 
    } 

enter image description here

protected void GridView1_RowDataBound1(object sender, GridViewRowEventArgs e) 
    { 

     //what to code here? 


     } 
+0

日期指從DATETIME值表 –

+0

這將是更好,如果你也能顯示錶的結構並更新我只是想獲得的所有數據到數據集或列表的問題 – Cdeez

+0

,我想,以避免重複的名稱,並指定日期時間來DDL –

回答

1

刪除重複的快速和骯髒的方式如下:

string sql = "select min(Id),Name,min(RunDate) from Historytable group by Name"; 

這消除其中一個重複Name用數值小的ID存在的所有行。

3

如果你想找回從HistoryTable只有唯一的名稱,你應該使用關鍵字DISTINCT

string sql = "select DISTINCT Name from Historytable"; 

然而,看到您的更新,我認爲你應該查詢更改爲類似@dasblinkenlight的建議答案如果你想爲每個名字

string sql = "select Min(ID), Name, Min(RunDate) from Historytable group by Name"; 

或第一次約會(如果你想爲每個名字的最後日期)

string sql = "select Max(ID), Name, Max(RunDate) from Historytable group by Name"; 
+0

數據 –

+0

你能否向你的問題添加一些樣本數據? – Steve

+0

耶更新的問題,即使我必須避免重複的名字,我必須填寫DDL與我只是張貼了這個,因爲我將使用存儲過程用於讀取數據的一個例子該名稱 –

0

如果你不需要任何東西的ID,您可以設置在其選​​定的事件到字典中的GridView中的ObjectDataSource,用一點點的LINQ to組東西:

Gridview1_ObjectDataSource_Selected(object sender, ObjectDataSourceStatusEventArgs e) { 
    DataSet ds = get(); 

    Dictionary<string, List<DateTime>> dict = new Dictionary<string, List<DateTime>>(); 

    var rows = ds.Tables[0].AsEnumerable() 
          .Select(row => new { name = row.Field<string>("name"), RunDate = row.Field<DateTime>("RunDate") }) 
          .GroupBy(r => r.name) 
    foreach (var group in rows) { 
     dict.Add(group.Key, group.ToList()); 
    } 
    e.ReturnValue = dict; 
}