簡體   English   中英

刪除類似的列表框項

[英]remove similar listbox items

我有一個包含類似項目的列表框,例如:file1.exe = 11,file1.exe = 9 file2.exe = 1,file3.zip = 7,file7.zip = 00,file3.zip = 101 ...等等。 現在,我要做的是刪除類似的項,因此我最終得到:file1.exe = 11,file3.zip = 7,file3.zip = 101 ..等。 末尾的數字是隨機的,重要的是我沒有多次獲得相同的文件名。 這是我la腳的嘗試(矯kill過正,不起作用)。

    public void RemoveListboxDuplicates(ListBox ListBox)
    {
        List<String> filenames = new List<String>();
        List<String> unique = new List<String>(); 
        foreach (string itm in ListBox.Items)
        {
                string fname = itm.Substring(0, itm.LastIndexOf("="));
                filenames.Add(fname);
        }

        for (int i=0;i<filenames.Count;i++) 
        {
            if(!lstFiles.Items[i].ToString().Contains(filenames[i])) {
                unique.Add(lstFiles.Items[i].ToString());
            }
        }
        lstFiles.Items.Clear();

        foreach (string itm in unique)
        {
            lstFiles.Items.Add(itm);
        }
    }  

如果=之后的數字無關緊要,則一種處理方法是:

List<String> all = new List<String>();
foreach (string itm in ListBox.Items) {
    all.Add(itm);
}
var unique = all
    .GroupBy(s => s.Split('=')[0])
    .Select(g => g.First())
    .ToList();

s.Split('=')[0]操作將=之后的部分切掉,並將前綴用作分組鍵。 Select(g => g.First())部分獲取每個組的第一個元素,然后ToList()將結果再次放入List<string>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM