Próbuję zoptymalizować kod dla witryny SharePoint. Mam kontroli powielacz:HashSet jako DataSource
<asp:Repeater ID="CountryOptionsRepeater" runat="server">
<ItemTemplate>
<option value='<%#Eval("CountryName") %>'><%#Eval("CountryName") %></option>
</ItemTemplate>
</asp:Repeater>
jestem wypełnienie go danymi stole
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();
Czy istnieje sposób, aby bezpośrednio wiążą Hashset obiektu (noDupsCountriesList) do DataSource z tej samej konfiguracji repeatera, w celu doprowadzić do optymalizacji?
Coś jak:
//countriesList = countriesList.Distinct<String>().ToList<String>();
//countriesList.Sort();
var noDupsCountriesList = new HashSet<String>(countriesList);
CountryOptionsRepeater.DataMember = "CountryName"; // ??
CountryOptionsRepeater.DataSource = noDupsCountriesList;
CountryOptionsRepeater.DataBind();
this.DataBind();
dlaczego trzeba DataTable lub HashSet? Czy "CountryOptionsRepeater.DataSource = countriesList;" nie załatwi sprawę? – paul
Możliwe, że będzie możliwe powiązanie bezpośrednio z 'HashSet <>', ale nie dostarczysz krajów posortowanych alfabetycznie, które z twojego kodu wydają się konieczne. – MiMo
@MiMo, dzięki temu dodałbym instrukcję 'OrderBy' (przy założeniu, że HashSet' initializaiton + OrderBy' jest o wiele bardziej zoptymalizowany niż wywołanie List <> 'Distinct() + ToList() + Sort() ') .. – Annie