Estoy tratando de optimizar el código para SharePoint webpart. Tengo un control del repetidor:HashSet como DataSource
<asp:Repeater ID="CountryOptionsRepeater" runat="server">
<ItemTemplate>
<option value='<%#Eval("CountryName") %>'><%#Eval("CountryName") %></option>
</ItemTemplate>
</asp:Repeater>
Estoy llenando con los datos de la tabla
countriesList = countriesList.Distinct<String>().ToList<String>();
countriesList.Sort();
//var noDupsCountriesList = new HashSet<String>(countriesList);
DataTable dt = new DataTable();
dt.Columns.Add("CountryName");
foreach (String countryName in countriesList)
{
DataRow dr = dt.NewRow();
dr["CountryName"] = countryName;
dt.Rows.Add(dr);
}
CountryOptionsRepeater.DataSource = dt;
CountryOptionsRepeater.DataBind();
this.DataBind();
¿Hay una manera de unirse directamente HashSet objeto (noDupsCountriesList) para DataSource con la misma configuración de repetidor, con el fin para lograr la optimización?
Algo así como:
//countriesList = countriesList.Distinct<String>().ToList<String>();
//countriesList.Sort();
var noDupsCountriesList = new HashSet<String>(countriesList);
CountryOptionsRepeater.DataMember = "CountryName"; // ??
CountryOptionsRepeater.DataSource = noDupsCountriesList;
CountryOptionsRepeater.DataBind();
this.DataBind();
¿por qué necesita el DataTable o HashSet? ¿'CountryOptionsRepeater.DataSource = countriesList;' no haría el truco? – paul
Podría ser posible hacer el enlace directamente al 'HashSet <>', pero no le dará los países ordenados alfabéticamente, que a partir de su código parece ser necesario. – MiMo
@MiMo, gracias Añadiría la instrucción 'OrderBy' (con la suposición de que la' initializaiton + OrderBy' de HashSet está mucho más optimizada que llamando a List <> 'Distinct() + ToList() + Sort() ') .. – Annie