2014-01-24 43 views
0

現在我的代碼可以從表上運行SQL代碼中獲取不同的值。我現在使用一個存儲過程來填充我的Gridview,而不是從表格中拉出來,因爲它不在表格上,所以不能在表格上選擇不同的表格。我想知道是否有人可以用正確的方向指向我,通過使用gridview的值創建我的列表。從gridview創建一個不同值的列表

這是我想切換的當前代碼。

connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices"].ToString()); 

string strSQL = string.Empty; 
switch (strColumnName) 
{ 
    case "SiteID": 
     strSQL = @"SELECT distinct SiteID, SiteID FROM Sites "; 
     break; 
    case "OrderDate": 
     strSQL = @"SELECT distinct OrderDate, CONVERT(VARCHAR(11), OrderDate, 106) AS [OrderDate] FROM Sites "; 
     break; 
} 

SqlCommand command = new SqlCommand(); 
command.CommandText = strSQL; 
command.Connection = connection; 

command.Connection.Open(); 

SqlDataReader dataReader = command.ExecuteReader(CommandBehavior.CloseConnection); 

IList<FilterValueSet> filterValueList = new List<FilterValueSet>(); 

while (dataReader.Read()) 
{ 
    filterValueList.Add(new FilterValueSet 
    { 
     Id = dataReader[0].ToString(), 
     Value = dataReader[1].ToString() 
    }); 
} 
connection.Close(); 

return filterValueList.ToArray<FilterValueSet>(); 

回答

1

您可以使用LINQ Distinct() method過濾結果就像

return filterValueList.Distinct(equalityComparer).ToArray(); 

您需要爲您的FilterValueSet類提供equality comparer,這樣的東西:

class MyEqualityComparer : EqualityComparer<FilterValueSet> 
{ 
    public override int GetHashCode(FilterValueSet obj) 
    { 
    return obj.Id.GetHashCode(); 
    } 
    public override bool Equals(T x, T y) 
    { 
    return x.Id.Equals(y.Id); 
    } 
} 
+0

感謝您的答覆。我之前沒有使用linq distinct()方法或質量比較,所以我需要讀入它們。我會讓你知道它是如何工作的。 – Zach