我的WinForm中有几个文本框。然后我将一些路径插入这些文本框中的某些文件 - 例如:
textbox1: C:\Users\File1.txt
textbox2: C:\Users\John\Desktop\File2.txt
textbox3: C:\File1.txt
textbox4: D:\Stuff\File3.txt
.
.
.
我试图检查:
File3.txt
)。File1.txt
)。如何使用最少量的代码执行此操作?我的代码对于这种事情来说太长了。
这就是我检查文件是否存在的原因。我不知道如何开始处理重复文件。
int filesDontExist = 0;
if (!String.IsNullOrEmpty(textbox1.Text))
{
if (!File.Exists(textbox1.Text)) { filesDontExist++; }
}
if (!String.IsNullOrEmpty(textbox2.Text))
{
if (!File.Exists(textbox2.Text)) { filesDontExist++; }
}
if (!String.IsNullOrEmpty(textbox3.Text))
{
if (!File.Exists(textbox3.Text)) { filesDontExist++; }
}
if (!String.IsNullOrEmpty(textbox4.Text))
{
if (!File.Exists(textbox4.Text)) { filesDontExist++; }
}
if (filesDontExist == 0) { MessageBox.Show("All files exist!"); }
else { MessageBox.Show("At least one file doesn't exist!"); }
答案 0 :(得分:4)
首先使用LINQ' Select
方法获取所有路径:
var paths = this.Controls.OfType<TextBox>().Select(x => x.Text);
然后使用File.Exists
确定是否所有文件都存在:
var allFilesExist = paths.All(File.Exists);
使用Path.GetFileName
方法获取所有文件名,然后使用GroupBy
检查是否存在重复文件:
var isDuplicate = paths.Select(x => Path.GetFileName(x))
.GroupBy(x => x)
.Any(g => g.Count() > 1);