Как проверить, существует ли уже значение в списке, прежде чем добавлять его в asp.net - PullRequest
4 голосов
/ 14 февраля 2012

как я могу проверить, присутствует ли уже значение в списке, чтобы избежать дублирования?

Я уже добавил некоторые значения в список на стороне сервера, и когда я добавляю в список, я получаю больше дубликатов.

Как избежать дубликатов?

lst_Viewers.Items.Add(reader["Name"].ToString());

Ответы [ 3 ]

7 голосов
/ 14 февраля 2012
ListItem item = new ListItem(reader["Name"].ToString());
if ( ! lst_Viewers.Items.Contains(item) ){
    lst_Viewers.Items.Add(item);
}

или

var name = reader["Name"].ToString();
ListItem item = lst_Viewers.Items.FindByText(name);
if ( item  == null ){
    lst_Viewers.Items.Add(new ListItem(name));
}
1 голос
/ 14 февраля 2012

Другим подходом может быть вставка всех значений в List<string>, а затем добавление элементов только после цикла, используя .Distinct(), чтобы получить только уникальные значения:

List<string> names = new List<string>();
while (reader.Read())
    names.Add(reader["Name"].ToString())
names.Distinct().ToList().ForEach(name => lst_Viewers.Items.Add(name));

Таким образом, вам не нужно искать весь DropDown в каждой итерации - более элегантно (на мой взгляд) и более эффективно.

1 голос
/ 14 февраля 2012
if(!lst_Viewers.Items.Any(item => item.Value.ToString().Equals(reader["Name"].ToString())
    lst_Viewers.Items.Add(reader["Name"].ToString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...