2015-12-11 3 views
0

У меня была некоторая помощь ранее в другом сообщении, чтобы удалить расширение файла в моем раскрывающемся списке. Теперь мне нужно удалить дубликаты. Это ток до и после:Удаление дубликатов из выпадающего списка

До:

video-1.mp4 
video-1.ogv 
video-1.webm 

После: (Текущий код)

video-1 
video-1 
video-1 

Что я хочу:

video-1 

Вот мой код позади :

protected void Page_Load(object sender, EventArgs e) 
    { 
    if (!IsPostBack) 
    { 
     BindGrid(); 
    } 

    if (!IsPostBack) 
    { 
     string[] filePaths = Directory.GetFiles(Server.MapPath("~/Uploads/")); 
     List<ListItem> files = new List<ListItem>(); 
     foreach (string filePath in filePaths) 
     { 
     var item = new ListItem(Path.GetFileNameWithoutExtension(filePath), filePath); 
     if (!files.Contains(item)) 
      files.Add(item); 
     } 

     DropDownList1.DataSource = files; 
     DropDownList1.DataTextField = ""; 
     DropDownList1.DataValueField = ""; 
     DropDownList1.DataBind(); 
    } 
    } 
+0

Но, что Filepath бы в значении ListItem в этом случае? –

ответ

1

Я предполагаю, что вы хотите сохранить filePath (по крайней мере, для некоторых файлов) и сохранить его как значение ListItem, как показано вашим кодом.

Вы можете использовать Dictionary так:

Dictionary<string,string> filenames = new Dictionary<string, string>(); 

foreach (string filePath in filePaths) 
{ 
    var file_name_without_extension = Path.GetFileNameWithoutExtension(filePath); 

    if(filenames.ContainsKey(file_name_without_extension)) 
     continue; 

    filenames.Add(file_name_without_extension, filePath); 
} 

List<ListItem> files = filenames.Select(x => new ListItem(x.Key, x.Value)).ToList(); 
+0

Благодарим вас, это разрешило дублированное имя файла в моем выпадающем списке –

1

Метод расширения LINQ .Distinct() поможет. Вам может потребоваться вручную добавить using System.Linq;

Не забывайте, что он будет возвращать новую коллекцию без дубликатов вместо того, чтобы изменять текущий.

+0

Да, избили меня. – djangojazz

+0

Немного больше помогли бы разместить в приведенном выше коде будет очень полезно. Я пробовал несколько вещей, но не могу найти подходящее место для его использования. –

+0

Перед настройкой DataSource вызовите файлы = files.Distinct(); – Filip

Смежные вопросы