Linq之Linq to Objects
目录
写在前面
上篇文章介绍了linq的延迟加载特性的相关内容,从这篇文章开始将陆续介绍linq to Objects,linq to xml,linq to sql等内容。
系列文章
linq to objects
术语“LINQ to Objects”是指直接对任意 IEnumerable 或 IEnumerable<T> 集合使用 LINQ 查询,无需使用中间 LINQ 提供程序或 API,例如 LINQ to SQL [LINQ to SQL] 或 LINQ to XML。 可以使用 LINQ 来查询任何可枚举的集合,例如 List<T>、Array 或 Dictionary<TKey, TValue>。 该集合可以是用户定义的集合,也可以是由 .NET Framework API 返回的集合。
从根本上说,“LINQ to Objects”表示一种新的处理集合的方法。 采用旧方法,你必须编写指定如何从集合检索数据的复杂的 foreach 循环。 而采用 LINQ 方法,你只需编写描述要检索的内容的声明性代码。
另外,与传统的 foreach 循环相比,LINQ 查询具有三大优势:
1.它们更简明、更易读,尤其在筛选多个条件时。
2.它们使用最少的应用程序代码提供强大的筛选、排序和分组功能。
3.无需修改或只需做很小的修改即可将它们移植到其他数据源。
-----MSDN
在前面文章中,使用linq查询ArrayList。
另外,linq在字符串,反射,文件目录操作中作为查询也是非常方便的。下面看一个例子,查询某个目录下所有扩展名为“.rar”的文件。
using System.IO;
using System.Linq;
namespace Wolfy.Linq2ObjectsDemo
{
class Program
{
static void Main(string[] args)
{
var fileNames = from n in GetFileNames(@"F:\", ".rar")
select Path.GetFileName(n);
foreach (var item in fileNames)
{
Console.WriteLine(item);
}
Console.Read();
}
/// <summary>
/// 获得文件名路径
/// </summary>
/// <param name="strPath"></param>
/// <param name="strExtention"></param>
static IEnumerable<string> GetFileNames(string strPath, string strExtention)
{
DirectoryInfo dir = new DirectoryInfo(strPath);
IEnumerable<System.IO.FileInfo> files = dir.GetFiles("*.*", SearchOption.AllDirectories);
//linq查询
var result = from file in files
where file.Extension == strExtention
select file.FullName;
return result;
}
}
}
输出

总结
linq to objects内容比较简单,也许你在项目中一直在用,就不再多说了。如果想了解更多,可以查看下面的参考中的内容。
参考
https://msdn.microsoft.com/zh-cn/library/cc981895.aspx
https://msdn.microsoft.com/zh-cn/library/bb546159.aspx
https://msdn.microsoft.com/zh-cn/library/bb397937.aspx
Linq之Linq to Objects的更多相关文章
- C# ~ 从 XML 到 Linq 到 Linq to XML
.XML 可扩展标记语言 (Extensible Markup Language), 标记 (markup) 是关键部分,是标准通用标记语言 (Standard Generalized Markup ...
- Linq之Linq to Sql
目录 写在前面 系列文章 Linq to sql 总结 写在前面 上篇文章介绍了linq to xml的相关内容,linq to xml提供一种更便捷的创建xml树,及查询的途径.这篇文章将继续介绍l ...
- Linq之Linq to XML
目录 写在前面 系列文章 linq to xml 总结 写在前面 在很多情况下,都可以见到使用xml的影子.例如,在 Web 上,在配置文件.Microsoft Office Word 文件(将wor ...
- C#5.0之后推荐使用TPL(Task Parallel Libray 任务并行库) 和PLINQ(Parallel LINQ, 并行Linq). 其次是TAP(Task-based Asynchronous Pattern, 基于任务的异步模式)
学习书籍: <C#本质论> 1--C#5.0之后推荐使用TPL(Task Parallel Libray 任务并行库) 和PLINQ(Parallel LINQ, 并行Linq). 其次是 ...
- Linq技术四:动态Linq技术 -- Linq.Expressions
前面介绍了Linq的三个方面应用:Linq to SQL, Linq to XML和Linq to Object,这篇介绍一下动态Linq的实现方式及应用场景. 命名空间: System.Linq; ...
- LINQ之LINQ to Objects(上)
LINQ概述 LINQ,语言集成查询(Language Integrated Query),它允许使用C#或VB代码以查询数据库相同的方式来操作不同的数据源. 1.LINQ体系结构 从上图可以看出,L ...
- LINQ(LINQ to Entities)
LINQ to Entities 是 LINQ 中最吸引人的部分.它让你可以使用标准的 C# 对象与数据库的结构和数据打交道.使用 LINQ to Entities 时,LINQ 查询在后台转换为 S ...
- LINQ(LINQ to DataSet)
http://www.cnblogs.com/SkySoot/archive/2012/08/21/2649471.html DataTable.Select()方法使用和 SQL 相似的过滤语法从 ...
- LINQ 图解 LINQ学习第三篇 [转]
LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作 ...
随机推荐
- matlab2015b调用摄像头
参考链接:http://blog.csdn.net/lyqmath/article/details/7307429 本人电脑是宏碁T5000 调用代码: % By lyqmathclc; clear ...
- java 空指针异常(java.lang.NullPointerException)
在Java中对值为null的指针调用任何方法,就会引发空指针异常(java.lang.NullPointerException).空指针异常绝对 是Java中最难查找和调试的一种异常,你永远无法得到任 ...
- python中range函数和xrange函数有什么异同?
http://ciniao.me/article.php?id=17 简单来说,range生成的是一个列表,而xrange生成的是一个生成器,而生成器在数组很大的时候能够比range更节省空间
- 在springmvc中使用hibernate-validate
在springmvc.xml中加入 <!-- 国际化配置 --> <bean id="localeResolver" class="org.spring ...
- NGUI:HUD Text(头顶伤害漂浮文字)
HUD Text 很早之前就有闻于NGUI中的HUD Text插件,今天得以尝试,看了会儿官方的文档,楞是没给看明白,官方的ReadMe.txt写的使用方法如下: 官网Usage 1. Attach ...
- Xcode中文乱码问题
老师给拷贝的程序用Xcode打开中文显示是乱码,而预览里面是正常显示的,Xcode默认编码UTF-8没错的,怎么办呢? 解决办法:用自带的文本编辑器打开,全选,复制,Xcode中打开文件,粘贴,ok~ ...
- linux下的缓存机制及清理buffer/cache/swap的方法梳理
(1)缓存机制 为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接 ...
- f2fs解析(四)f2fs的extent特性
extent的意思是“程度”,但是我还是搞不清楚要如何把“程度”和我理解的extent联系到一起. 文件的偏移和page-cache的映射关系体现在address space 中的一颗基数树上:当基数 ...
- easyui datagrid 多行删除问题
问题: var selected = $("#tbList").datagrid("getSelections"); selected的选中项 会包含上次已删掉 ...
- [py] 导入模块 reload(sys)
#!/usr/bin/env python # coding: utf-8 import sys reload(sys) #<------这个是什么意思 sys.setdefault ...