繁体   English   中英

从下拉列表中删除重复项

[英]Removing Duplicates from a dropdown list

早些时候,我在另一篇文章中获得了一些帮助,以删除下拉列表中的文件扩展名。 我现在需要删除重复项。 这是当前之前和之后:

之前:

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

LINQ的扩展方法.Distinct()会有所帮助。 您可能需要using System.Linq;手动添加using System.Linq;

不要忘记,它将返回不包含重复元素的新集合,而不是修改当前元素。

我假设您要保留filePath (至少对于某些文件而言)并将其存储为代码所示的ListItem的值。

您可以使用以下字典

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM