Linq to Object
微软在.Net Framework 3.5 中推出了 Linq 技术,
Linq – 即是 Language Integerated Query (语言集成查询),
其主要综合了对 Object ,DataSet , SQL Server , XML 的查询,
当然对于 SQL Server 的查询需要解释一下就是本身名字并非是 Linq to SQL Server,
而是 Linq to SQL ,只不过现在的 Linq 暂时还只支持 Sql Server 数据库,
对 DB2 和 Oracle 暂时还不支持。
首先还是从 Linq to Object 说起吧,
Linq to Object 是一种是用 Linq 技术对 Object 类型进行的查询操作,
但是并不是所有的 Object 都是可以使用 Linq 来进行查询的,
只有实现了 IEnumberable 或者 IEnumberable<T> 接口的集合对象,
才可以使用 Linq 技术来完成查询操作,
事实上,在 Linq to DataSet 中,
也要求 DataTable 直接或者间接的实现上面谈到的两个接口,
下面就来看一个 Demo 吧
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
namespace CSharpLanguage
{
public partial class Demo__5 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//这个就是最简单的 Linq 查询技术了
//即 Linq to Object
//但是需要注意的是这个 Object 必须实现了 IEnumerable 或者
//IEnumerable<T> 接口的集合对象
//否则无法完成查询
//public class List<T> : IList<T>, ICollection<T>,
//IEnumerable<T>, IList, ICollection, IEnumerable
//由此可见 List<T> 同时实现了 IEnumerable 和 IEnumerable<T> 接口
//故完全可以使用 Linq to Object 技术来执行查询操作
//这里还使用了一定 C# 3.0 中新增的技术,
//就是在定义集合时可以使用如下方式进行初始化
List<string> myList = new List<string> { "23", "BaoBeiMe", "XiaoZhen" };
myList.Add("12.6");
myList.Add("Me");
myList.Add("Perfect");
myList.Add("Beautiful");
var result = from p in myList
select p;
foreach (var value in result)
{
Response.Write(value + "-----");
}
//使用 Linq to Object 来查询指定目录下的所有的歌曲文件
//指定歌曲所在的目录
string dirPath = "F:\\音乐\\My Love";
//查询出目录中所有的.mp3格式的歌曲文件的完整路径
//这里就是一个典型的 Linq to Object 的例子
var music = from p in GetMusicList(dirPath)
where p.Extension.ToLower()==".mp3"
select p.FullName;
foreach (var p in music)
{
Response.Write(p.ToString() + "<br/>");
}
}
private List<FileInfo> GetMusicList(string dirPath)
{
//建立 FileInfo 类型的泛型集合对象
List<FileInfo> myMusicList = new List<FileInfo>();
//也就是指定的目录不存在
if (!Directory.Exists(dirPath))
{
return null;
}
else
{
DirectoryInfo dirInfo = new DirectoryInfo(dirPath);
//遍历这个目录下的所有文件,并且添加到泛型集合对象中
foreach (FileInfo file in dirInfo.GetFiles())
{
myMusicList.Add(file);
}
return myMusicList;
}
}
}
}
以上就是整个 Demo 的 Code-Behind 中的代码了,
再附上以个截图吧
其实 Demo 真的是好简单的,不过呢,其中涉及的几个要点还是必须掌握的,
一个就是要熟悉 Linq 语句的基本表示,
其二就是要明确凡是要使用 Linq to Object 进行查询的对象,
均必须至少实现 IEnumberable 和 IEnumberable<T> 中的一个。
2010—2—01
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器