2015-06-02 41 views
0
items = File 
    .ReadLines(RecentFiles) 
    .Select(line => new ToolStripMenuItem() 
    { 
     Text = line 
    }) 
    .ToArray(); 
recentFilesToolStripMenuItem.DropDownItems.AddRange(items); 

我要檢查,如果在recentFilesToolStripMenuItem.DropDownItems如何檢查ToolStripMenuItem DropDownItems中是否存在項目?

已經存在的項目如果不存在添加,但如果存在不加。

+2

你確定你不只是想清楚了嗎?在此 – SLaks

回答

1

你基本上有兩種類別:items & recentFilesToolStripMenuItem.DropDownItems

使用Linq,你應該能夠做到一個Except()一個Where()只添加兩個集合之間的差異。

這未經測試。

recentFilesToolStripMenuItem.DropDownItems.AddRange(items.Except(recentFilesToolStripMenuItem.DropDownItems));

這是測試

recentFilesToolStrip.DropDownItems.AddRange(
    items 
    .Where(i => !recentFilesToolStrip.DropDownItems 
       .OfType<ToolStripMenuItem>() 
       .Select(t => t.Text).Contains(i.Text) 
     ).ToArray() 
); 

SLaks評論指做類似如下:

recentFilesToolStripMenuItems.DropDownItems.Clear(); 
recentFilesToolStripMenuItems.DropDownItems.AddRange(items); 
+0

沙皮即時得到錯誤:錯誤\t \t 2參數2:不能從 'System.Windows.Forms.ToolStripItemCollection' 轉換爲 'System.Collections.Generic.IEnumerable ' –

+0

錯誤參數1:不能從 'System.Collections.Generic.IEnumerable ' 轉換爲 'System.Windows.Forms.ToolStripItemCollection' –

+0

錯誤\t \t 1「System.Windows.Forms.ToolStripMenuItem [] '不包含'Except'的定義和最佳擴展方法重載'System.Linq.Enumerable.Except (System.Collections.Generic.IEnumerable ,System.Collections.Generic.IEnumerable )'有一些無效參數 –

相關問題