에 값을 추가하기 전에 목록 상자에 값이 이미 있는지 확인하는 방법 중복을 피할 수 있도록 값이 목록 상자에 이미 있는지 확인할 수 있습니까?asp.net
이미 서버 측 목록 상자에 값을 추가했습니다. 목록에 추가하면 더 많은 중복이 생성됩니다.
중복을 피하려면 어떻게해야합니까?
lst_Viewers.Items.Add(reader["Name"].ToString());
에 값을 추가하기 전에 목록 상자에 값이 이미 있는지 확인하는 방법 중복을 피할 수 있도록 값이 목록 상자에 이미 있는지 확인할 수 있습니까?asp.net
이미 서버 측 목록 상자에 값을 추가했습니다. 목록에 추가하면 더 많은 중복이 생성됩니다.
중복을 피하려면 어떻게해야합니까?
lst_Viewers.Items.Add(reader["Name"].ToString());
if(!lst_Viewers.Items.Any(item => item.Value.ToString().Equals(reader["Name"].ToString())
lst_Viewers.Items.Add(reader["Name"].ToString());
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));
}
또 다른 방법은 만 고유 한 값을 얻을 수 .Distinct()
를 사용하여, 단지 루프 후 항목을 추가 List<string>
에 모든 값을 삽입 할 수 있습니다 :
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을 검색 할 필요가 없습니다. 제 생각에는 좀 더 우아하고 효율적입니다.
어쩌면 추가하기 전에 목록 상자를 지우시겠습니까? 그렇다면 복제 된 아이템이나 구식 아이템을 결코 얻지 못할 것입니다. – abatishchev
@abatishchev 이것은 Murthy가 원하는 것이 아닙니다. 그는 중복 값을 확인하기 전에 목록 상자에 항목을 추가하려고합니다. – Sukanya