我一直在搜索大约一个小时,却无法找到解决问题的方法。我试图在除了以“_days.txt”结尾的那些文件中显示所有.txt文件。这是我的代码,希望你能提供帮助。谢谢!
foreach (FileInfo file in files)
{
if (file.Name.Substring(file.Length - 9, file.Length) != "_days.txt") //I get errors on this row, saying "Arg1, Arg2; Cannot convert from "long" to "int"
{
listBox1.Items.Add(file.Name);
}
}
答案 0 :(得分:4)
要回答您的初始问题(并回答您收到错误的原因),您正在尝试对long File.Length
使用操作结果(这是另一个问题,因为这是文件的大小,不是文件名的长度)作为string.Substring(int, int)
的参数。由于long
和int
之间的操作会返回long
(因为它是较大的类型),因此您需要先将其转换为int
- 但{ {1}}不是你想要的字段。
尝试使用String.EndsWith(string),因为它更具可读性。
File.Length
答案 1 :(得分:3)
这是一个简单干净的LINQ解决方案,使用Where
来过滤我们迭代的列表。
foreach (FileInfo f in files.Where(x => x.Name.EndsWith("_days.txt") == false))
{
listBox1.Items.Add(file.Name);
}
在哪里基本上替换你的if语句。迭代的每个对象都将在Where语句中应用条件。