DataView: верхние строки и различать их? - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть этот код:

<asp:DropDownList AutoPostBack=False id="nation" runat="server" DataTextField="Title" DataValueField="Desc"></asp:DropDownList>

DataView nation = new DataView(new MyObjects().RsTable);
nation.Sort = "Title DESC";
DropNazioni.DataSource = nation;
DropNazioni.DataBind();

Что я хотел бы сделать:

  1. Поместить только отдельные значения в DropDownList (поэтому, если у меня есть 2 значения "Италия", вставьте только один раз Италия);
  2. Верхние строки в DropDownList (поэтому, если у меня есть Италия, выведите ITALY);

Пробовал nation.Distinct() или nation.ToUpperString(), но кажется, что эти методы не существуют.

Я (к сожалению) работаю над старым проектом с .NET 2.0, поэтому LINQ нет.

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Попробуйте GroupBy.

var result = MyObjects().RsTable
                        .AsEnumerable()
                        .GroupBy(p => p.Field<string>("Nation"))
                        .Select(p=>p.Key);

Или

var result = MyObjects().RsTable
                        .AsEnumerable()
                        .GroupBy(p => p.Field<string>("Nation").ToUpper())
                        .Select(p=>p.Key);
0 голосов
/ 01 февраля 2012

Нашли решение:

DropNazioni.DataSource = nation.ToTable(true,new string[] { "Title", "Desc" });

и CSS в DropDownList:

style="text-transform:uppercase;"
...