2015-06-02 27 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 )'有一些无效参数 –

相关问题