private void button1_Click(object sender, EventArgs e)
{
if (this.folderBrowserDialog1.ShowDialog() != DialogResult.Cancel)
{
string dir = this.folderBrowserDialog1.SelectedPath;
var extensions = new List<string> { ".jpg", ".gif", ".png" };
images = Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories).Where(fileName => extensions.Any(extension => fileName.EndsWith(extension))).ToArray();
listBox1.Items.AddRange(images);
if (listBox1.Items.Count > 0)
{
beginConvertionToolStripMenuItem.Enabled = true;
}
}
}
现在它只适用于.jpg .gif .png小写的情况我怎样才能使它也适用于大写JPG GIF PNG而不再添加扩展名作为大写字母manualy?
答案 0 :(得分:3)
您可以将String.Equals
与重载StringComparison
一起使用,例如InvariantCultureIgnoreCase
。我也会使用System.IO.Path
class:
var images = Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories)
.Where(fileName => extensions
.Any(extension => extension.Equals(
Path.GetExtension(fileName),
StringComparison.InvariantCultureIgnoreCase)))
.ToArray();
如果extension
可能是null
我更喜欢StringComparer.InvariantCultureIgnoreCase.Equals
:
var images = Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories)
.Where(fileName => extensions
.Any(extension => StringComparer.InvariantCultureIgnoreCase.Equals(
Path.GetExtension(fileName),
extension)))
.ToArray();
但您可以直接使用Enumerable.Any
代替Enumerable.Contains
:
var images = Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories)
.Where(fileName => extensions
.Contains(Path.GetExtension(fileName), StringComparer.InvariantCultureIgnoreCase))
.ToArray();