C# [LINQ] Linq Expression 获取多格式文件
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 获取多格式文件的更多相关文章
- 使用Python脚本获取指定格式文件列表的方法
在Python环境下获取指定后缀文件列表的方式. 来源stackoverflow 这里简单以*.txt的作为例子. 使用glob(推荐) import glob, os os.chdir(" ...
- Linq之Expression进阶
目录 写在前面 系列文章 表达式树解析 表达式树特性 编译表达树 总结 写在前面 让我们首先简单回顾一下上篇文章介绍的内容,上篇文章介绍了表达式树的基本概念(表达式树又称为“表达式目录树”,以数据形式 ...
- Linq之Expression高级篇(常用表达式类型)
目录 写在前面 系列文章 变量表达式 常量表达式 条件表达式 赋值表达式 二元运算符表达式 一元运算符表达式 循环表达式 块表达式 总结 写在前面 首先回顾一下上篇文章的内容,上篇文章介绍了表达式树的 ...
- Linq之Expression初见
目录 写在前面 系列文章 Expression 表达式树创建方式 一个例子 总结 写在前面 上篇文章介绍了扩展方法,这篇文章开始将陆续介绍在linq中使用最多的表达式树的相关概念,以概念及例子一一列出 ...
- XML(php中获取xml文件的方式/ajax获取xml格式的响应数据的方式)
1.XML 格式规范: ① 必须有一个根元素 ② 不可有空格.不可以数字或.开头.大小写敏感 ③ 不可交叉嵌套 ④ 属性双引号(浏览器自动修正成双引号了) ⑤ 特殊符号要使用实体 ⑥ 注释和HTML一 ...
- ftp获取远程Pdf文件
此程序需要安装ftp服务器,安装adobe reader(我这里使用的adobe reader9.0) 1.部署ftp服务器 将ftp的权限设置为允许匿名访问,部署完成 2.安装adobe reade ...
- C# 获取目录下文件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 【NLP】Tika 文本预处理:抽取各种格式文件内容
Tika常见格式文件抽取内容并做预处理 作者 白宁超 2016年3月30日18:57:08 摘要:本文主要针对自然语言处理(NLP)过程中,重要基础部分抽取文本内容的预处理.首先我们要意识到预处理的重 ...
- 针对格式文件,Python读取一定大小的文件内容
由数据库导出的数据是格式化数据,如下所示,每两个<REC>之间的数据是一个记录的所有字段数据,如<TITLE>.<ABSTRACT>.<SUBJECT_COD ...
随机推荐
- tomcat启动项目时一直在跑,项目没起来
1. 在整合maven项目时我遇到一个问题,tomcat启动项目总是报超时,后来我把timeout调到180秒,还是启动超时.看了不是timeout时间短的问题. 2.弄了一天也没解决,后来请大神给看 ...
- 关于Excel报错
今天,用POI做一个Excel的导出时,总是报空指针错误.后来经过我仔细的查找翻阅日志才发现问题的真正所在: 报错如下: HTTP Status 500 - Request processing fa ...
- Spark机器学习基础一
特征工程 对连续值处理 0.binarizer/二值化 from __future__ import print_function from pyspark.sql import SparkSessi ...
- vue怎么引入外网json文件
今日吃午饭时,伊万卡前端小妹问了我一个问题."App中有一个模块是用H5做的,其中有一个接口读取的是本地json资源文件,但是这个文件修改时间不定,我又不想每次修改了这个文件再重新发版打个包 ...
- H5外包团队 H5开发微信APP的优势有哪些
H5外包团队 H5开发微信APP的优势有哪些
- scrapy爬虫具体案例步骤详细分析
scrapy爬虫具体案例详细分析 scrapy,它是一个整合了的爬虫框架, 有着非常健全的管理系统. 而且它也是分布式爬虫, 它的管理体系非常复杂. 但是特别高效.用途广泛,主要用于数据挖掘.检测以及 ...
- IDEA 介绍
转载:https://blog.csdn.net/kanchaishaonian/article/details/81107210 前言:IntelliJ IDEA 如果说IntelliJ IDEA是 ...
- Java分布式锁看这篇就够了
### 什么是锁? 在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量. 而同步的本质是通过锁来实现的 ...
- python kline
# -*- coding: utf-8 -*- # Qt相关和十字光标 from qtpy.QtGui import * from qtpy.QtCore import * from qtpy imp ...
- Python+turtle交互式绘图:可以用鼠标拖动的小海龟
下面是我画海龟的过程: (1)打开python: 2.调用turtle库,先设置一些基础设置,与一个画龟的函数 from turtle import Screen,Turtle,mainloop cl ...