2014-07-24 94 views
0

鮮明的列名我有一個SQL查詢這樣獲取列表

SELECT DISTINCT CustomerName FROM Customers 

它返回不同customerNames的名單,

我如何在C#

目前我得到這個列表我在DataTable中獲取結果,然後在列表中只提取我需要的列。

private List<String> GetDistinctCustomerNames() 
{ 
    var dataTable = new DataTable("ResultDataTable"); 
    using (var sqlCommand = new SqlCommand()) 
    { 
     // set the connection for the commnad 
     sqlCommand.Connection = sqlConnection; 

     // assign the insert query as a text to the sql command 
     sqlCommand.CommandText = "SELECT DISTINCT CustomerName FROM Customers"; 

     using (var sqlDataAdapter = new SqlDataAdapter()) 
     { 
      sqlDataAdapter.SelectCommand = sqlCommand; 
      dataTable.Load(sqlCommand.ExecuteReader()); 
     } 

     if (dataTable.Columns.Contains("CustomerName")) 
     { 
      return (from DataRow dataRow in dataTable.Rows select dataRow["CustomerName"].ToString()).ToList(); 
     } 

    return null; 
} 

但我不覺得這是一個很好的解決方案。

+0

如果添加了Dapper,你可以做這樣的事情:IList的 MYLIST = Dapper.SqlMapper.Query ( sqlConnnection, 「SELECT DISTINCT客戶名稱客戶;」)ToList(); –

+0

使用簡單的SqlDataReader有什麼問題? –

+0

您可以將輸出作爲XML接收,並使用XML解析器爲您創建列表。也許更優雅,雖然可能效率不高。 –

回答

0

而是有你爲該回報我會做一個foreach

ForEach(var element in DataTable.Rows) 
    if(element.CustomerName != NULL) 
     list.add(element.ToString()) 
     //To string is only needed if the db stores it as not an nvarchar or something like that 

return list 
0

後你從方法列表中,您可以應用下面的代碼。

// Get distinct elements and convert into a list again. 
List<string> distinct = list.Distinct().ToList(); 
+0

由於我的不同查詢,我只會從SQL中獲得一個Distinct List,我想避免DataTable迭代。 – Pankaj

+0

@潘卡伊。嘗試這個鏈接,請結合頂部1和明確的一起.http://stackoverflow.com/questions/20086243/sql-server-top1-with-distinct –