Linq过滤目录

时间:2009-08-18 01:45:06

标签: linq

我通过调用GetDirectories()

获得了追随者的目标

C:\应用\ 20090331 \ C:\程序\ 20090430 \ C:\程序\ 20090531 \ C:\程序\ 20090630 \ C:\程序\ 20090731 \ C:\应用\ 20090831 \

我想要20090531和20090731之间的目录,我怎么能通过Linq做到这一点? 谢谢!

4 个答案:

答案 0 :(得分:3)

.Where(x => x>“c:\ app \ 20090531”&& x<“c:\ app \ 20090731”)。ToList()

如果您希望将其列入清单,则会收费。如果IEnumerable合适,请将其关闭。

答案 1 :(得分:1)

在最小和最大目录名称(作为字符串)与x(作为字符串)之间使用LINQ .Where 语句和 String.Compare

不要理会使用blah .Parse ,只是进行字符串比较 - 你的目录名称仍然是数字,所以当你只能使用直接值比较时,没有使用解析每个。

var query = directories
    .Where(x => {
        return (String.Compare(x, @"c:\app\20090531") > 0 && String.Compare(x, @"c:\app\20090731") < 0)
    });

答案 2 :(得分:0)

我得到了:运营商'&gt;'不能应用于'string'和'string'

的操作数类型

答案 3 :(得分:0)

var query = directories
    .Where(d => {
        int directoryNumber = int.Parse(d.Replace(@"c:\app\", string.Empty)
            .Replace("\\", string.Empty));
        return directoryNumber > 20090531 && directoryNumber < 20090731;
    });

如有必要,您还可以将其转换为DateTime。

编辑:显然是stackoverflow,或者它使用的任何解析都不喜欢我的逐字字符串。