using System;
using System.IO;
using System.Linq;
using System.Linq.Expressions;
        internal static string[] EnumerateMultiExtensionFiles(string directory, string searchPattern, SearchOption searchOption)
{
IQueryable<string> queayableFiles = Directory.GetFiles(directory, "*.*", searchOption).AsQueryable<string>();
string[] exts = searchPattern.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
ParameterExpression pe = Expression.Parameter(typeof(string), "ext");
Expression e = null; for (int i = ; i < exts.Length; i++)
{
Expression callMethod1 = Expression.Call(pe, typeof(string).GetMethod("ToLower", Type.EmptyTypes));
Expression callMethod2 = Expression.Constant(exts[i]);
if (i > )
{
e = Expression.OrElse(e, Expression.Call(callMethod1, typeof(string).GetMethod("EndsWith", new Type[] { typeof(string) }), callMethod2));
}
else
{
e = Expression.Call(callMethod1, typeof(string).GetMethod("EndsWith", new Type[] { typeof(string) }), callMethod2);
}
}
MethodCallExpression whereCallExpression = Expression.Call(
typeof(Queryable),
"Where",
new Type[] { queayableFiles.ElementType },
queayableFiles.Expression,
Expression.Lambda<Func<string, bool>>(e, new ParameterExpression[] { pe })
);
IQueryable<string> result = queayableFiles.Provider.CreateQuery<string>(whereCallExpression);
return result.ToArray();
}
调用:
EnumerateMultiExtensionFiles("x:\\", ".mp3|.flac|.wav", SearchOption.TopDirectoryOnly);

C# [LINQ] Linq Expression 获取多格式文件的更多相关文章

  1. 使用Python脚本获取指定格式文件列表的方法

    在Python环境下获取指定后缀文件列表的方式. 来源stackoverflow 这里简单以*.txt的作为例子. 使用glob(推荐) import glob, os os.chdir(" ...

  2. Linq之Expression进阶

    目录 写在前面 系列文章 表达式树解析 表达式树特性 编译表达树 总结 写在前面 让我们首先简单回顾一下上篇文章介绍的内容,上篇文章介绍了表达式树的基本概念(表达式树又称为“表达式目录树”,以数据形式 ...

  3. Linq之Expression高级篇(常用表达式类型)

    目录 写在前面 系列文章 变量表达式 常量表达式 条件表达式 赋值表达式 二元运算符表达式 一元运算符表达式 循环表达式 块表达式 总结 写在前面 首先回顾一下上篇文章的内容,上篇文章介绍了表达式树的 ...

  4. Linq之Expression初见

    目录 写在前面 系列文章 Expression 表达式树创建方式 一个例子 总结 写在前面 上篇文章介绍了扩展方法,这篇文章开始将陆续介绍在linq中使用最多的表达式树的相关概念,以概念及例子一一列出 ...

  5. XML(php中获取xml文件的方式/ajax获取xml格式的响应数据的方式)

    1.XML 格式规范: ① 必须有一个根元素 ② 不可有空格.不可以数字或.开头.大小写敏感 ③ 不可交叉嵌套 ④ 属性双引号(浏览器自动修正成双引号了) ⑤ 特殊符号要使用实体 ⑥ 注释和HTML一 ...

  6. ftp获取远程Pdf文件

    此程序需要安装ftp服务器,安装adobe reader(我这里使用的adobe reader9.0) 1.部署ftp服务器 将ftp的权限设置为允许匿名访问,部署完成 2.安装adobe reade ...

  7. C# 获取目录下文件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  8. 【NLP】Tika 文本预处理:抽取各种格式文件内容

    Tika常见格式文件抽取内容并做预处理 作者 白宁超 2016年3月30日18:57:08 摘要:本文主要针对自然语言处理(NLP)过程中,重要基础部分抽取文本内容的预处理.首先我们要意识到预处理的重 ...

  9. 针对格式文件,Python读取一定大小的文件内容

    由数据库导出的数据是格式化数据,如下所示,每两个<REC>之间的数据是一个记录的所有字段数据,如<TITLE>.<ABSTRACT>.<SUBJECT_COD ...

随机推荐

  1. tomcat启动项目时一直在跑,项目没起来

    1. 在整合maven项目时我遇到一个问题,tomcat启动项目总是报超时,后来我把timeout调到180秒,还是启动超时.看了不是timeout时间短的问题. 2.弄了一天也没解决,后来请大神给看 ...

  2. 关于Excel报错

    今天,用POI做一个Excel的导出时,总是报空指针错误.后来经过我仔细的查找翻阅日志才发现问题的真正所在: 报错如下: HTTP Status 500 - Request processing fa ...

  3. Spark机器学习基础一

    特征工程 对连续值处理 0.binarizer/二值化 from __future__ import print_function from pyspark.sql import SparkSessi ...

  4. vue怎么引入外网json文件

    今日吃午饭时,伊万卡前端小妹问了我一个问题."App中有一个模块是用H5做的,其中有一个接口读取的是本地json资源文件,但是这个文件修改时间不定,我又不想每次修改了这个文件再重新发版打个包 ...

  5. H5外包团队 H5开发微信APP的优势有哪些

    H5外包团队 H5开发微信APP的优势有哪些

  6. scrapy爬虫具体案例步骤详细分析

    scrapy爬虫具体案例详细分析 scrapy,它是一个整合了的爬虫框架, 有着非常健全的管理系统. 而且它也是分布式爬虫, 它的管理体系非常复杂. 但是特别高效.用途广泛,主要用于数据挖掘.检测以及 ...

  7. IDEA 介绍

    转载:https://blog.csdn.net/kanchaishaonian/article/details/81107210 前言:IntelliJ IDEA 如果说IntelliJ IDEA是 ...

  8. Java分布式锁看这篇就够了

    ### 什么是锁? 在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量. 而同步的本质是通过锁来实现的 ...

  9. python kline

    # -*- coding: utf-8 -*- # Qt相关和十字光标 from qtpy.QtGui import * from qtpy.QtCore import * from qtpy imp ...

  10. Python+turtle交互式绘图:可以用鼠标拖动的小海龟

    下面是我画海龟的过程: (1)打开python: 2.调用turtle库,先设置一些基础设置,与一个画龟的函数 from turtle import Screen,Turtle,mainloop cl ...