14

SharePoint Web パーツのコードを最適化しようとしています。私はリピーターコントロールを持っています:

<asp:Repeater ID="CountryOptionsRepeater" runat="server">
    <ItemTemplate>
        <option value='<%#Eval("CountryName") %>'><%#Eval("CountryName") %></option>
    </ItemTemplate>
</asp:Repeater>

データテーブルで埋めています

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();

最適化を実現するために、リピーターの同じ構成で HashSet オブジェクト (noDupsCountriesList) を DataSource に直接バインドする方法はありますか?

何かのようなもの:

//countriesList = countriesList.Distinct<String>().ToList<String>();
//countriesList.Sort();
var noDupsCountriesList = new HashSet<String>(countriesList);

CountryOptionsRepeater.DataMember = "CountryName"; // ??
CountryOptionsRepeater.DataSource = noDupsCountriesList;
CountryOptionsRepeater.DataBind();
this.DataBind();
4

1 に答える 1

6

この行は、コードの2番目のブロックを置き換えることができると思います。

CountryOptionsRepeater.DataSource = 
    countriesList
    .Distinct()
    .OrderBy(c => c)
    .Select(c => new { CountryName = c })
    .ToList();
于 2012-10-01T15:45:17.477 に答える