我有两个包含多个数据的列表框,ListBox1具有以下格式:
C:\Users\Charlie\Desktop\Trials\Trial0004COP.txt
并在我的ListBox2中:
Trial0004COP
如何检查列表框1中是否存在Trial0004COP?我使用了Contain()但它不起作用。
答案 0 :(得分:1)
我会推荐类似的东西:
var searchString = "Trial0004COP";
var isFound = false;
foreach(var name in listbox1.items)
{
if (Path.GetFileNameWithoutExtension(name).ToLower() == searchString.ToLower())
{
_IsFound = true;
break;
}
}
请注意,在Windows中,文件名是保留大小写但不区分大小写的,因此您需要检查文件名,忽略其大小写。
你可以在 Linq 中的一行中完成,如果这是你的事。
var searchString = "Trial0004COP";
var isFound = listBox1.Items.Cast<string>()
.Any(x => Path.GetFileNameWithoutExtension(x).ToLower() == searchString.ToLower());
答案 1 :(得分:0)
怎么样:
bool found = listBox1.Items.Cast<string>()
.Where(x => x.Contains("Trial0004COP"))
.Any();
或者要使用String.EndsWith()
方法更准确,但如果您想让其正常工作,您还必须添加".txt"
:
bool found = listBox1.Items.Cast<string>()
.Where(x => x.EndsWith("Trial0004COP.txt"))
.Any();
修改:
嗨Fuex,我正在使用OpenFileDialog来选择一个文件,然后这个文件就是 添加到我的listbox1与所有目录名称。在我的listbox2中我 读取包含多个Trials000“”的另一个文件并将其添加到 它,我想知道我从打开的对话框中选择的文件 存在于我的listboz2
中
是的,可以这样做:
bool found = false;
if(openFileDialog.ShowDialog() == DialogResult.OK){
found = listBox.Items.Cast<string>()
.Where(x => x.EndsWith(openFileDialog.FileName))
.Any();
if(!found)
MessageBox.Show(openFileDialog.FileName + " doesn't exist in listBox1"); //show a message
}
答案 2 :(得分:0)
使用 LINQ 可以:
listBox1.Items.Select(e => Path.GetFileNameWithoutExtension(e as string)).Contains("Trial0004COP");