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 ...
随机推荐
- Session &cookie introduction,usage
Cookie 1)什么是Cookie? 服务器为了识别用户身份而临时存放在浏览器端的少量数据. 2)工作原理 浏览器访问服务器时,服务器将一些数据以set-cooki ...
- shell编程(五)之函数
function:函数 函数只有被调用才会执行如何调用:给定函数名 函数名出现的地方,会被自动替换为函数代码 函数的生命周期:被调用时创建,返回时终止return命令返回自定义状态结果 0:成功 1- ...
- USACO比赛题泛刷
随时可能弃坑. 因为不知道最近要刷啥所以就决定刷下usaco. 优先级排在学习新算法和打比赛之后. 仅有一句话题解.难一点的可能有代码. 优先级是Gold>Silver.Platinum刷不动. ...
- MapReduce编程:数字排序
问题描述 将乱序数字按照升序排序. 思路描述 按照mapreduce的默认排序,依次输出key值. 代码 package org.apache.hadoop.examples; import java ...
- 用Python实现支持向量机并处理Iris数据集
SVM全称是Support Vector Machine,即支持向量机,是一种监督式学习算法.它主要应用于分类问题,通过改进代码也可以用作回归.所谓支持向量就是距离分隔面最近的向量.支持向量机就是要确 ...
- maven install报错 Failed to execute goal on project my-manager-mapper: Could not resolve dependencies for project com.my:my-manager-mapper:jar:0.0.1-SNAPSHOT:
报错信息为: [ERROR] Failed to execute goal on project my-manager-mapper: Could not resolve dependencies f ...
- Java+selenium+feeder+AutoIt+自动加载插件
package dataproject.datapro; import static org.testng.Assert.assertEqualsNoOrder; import java.io.Fil ...
- Python面向对象编程 -- 类和实例、访问限制
面向对象编程 Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程 ...
- Arthur and Questions CodeForces - 518E (贪心模拟)
大意: 给定序列$a$, 某些位置为'?', 求给'?'赋值使得序列$(a_1+a_2+...+a_k,a_2+a_3+...+a_{k+1},...)严格递增, 且$\sum|a_i|$最小. 化简 ...
- Django-CSRF的使用
1. 为什么要有csrf_token? 防止跨站请求伪造 2. Django中如何使用? urls.py: urlpatterns = [ # 测试跨站请求伪造 (CSRF) url(r'^csrf_ ...