LINQ To Objects 的資料來源

 
LINQ To Objects 的資料來源
 

/ 黃忠成
 
    LINQ To Objects的架構中,只要實作了IEnumerable<T>介面的物件,皆可做為LINQ To Objects的資料來源,那具體有那些呢?見下表。
型別
說明
IEnumerable<T> 系列
1、具型陣列,如string[]int[]DateTime[]等等。
2、實作了IEnumerable<T> 之物件,如ListDictionaryCollection
 
.NET Framework 3.5 資料庫開發聖典一書中,第三章主要使用此類來演示。
IEnumerable介面
1、實作了IEnumerable介面的物件,雖然廣義上而言,也能做為LINQ To Objects的資料來源,但需透過Cast、OfType函式轉換為IEnumerable<T>的過程,
 
 
DataReader、ArrayList等類物件均可循此途徑來與LINQ To Objects結合。
 
.NET Framework 3.5 資料庫開發聖典一書中,這種應用不多,隱藏在CastOfType一節。
IQueryable<T>介面
就層次上而言,IQueryable介面也屬於LINQ To Objects所支援的資料來源,因為其是IEnumerable<T>的子代介面,當編譯器發現資料來源為實作IQueryable<T>介面之物件時,會採取Expression Tree方式來處理LINQ 查詢式。
這是為了將LINQ查詢式轉譯成一個個Expression Node,交由特定機制,將Expression Node轉譯為其它特定系統所能接受的指令。
例如:
1LINQ To SQLLINQ To Entities Expression Node轉為
SQL 指令。
2LINQ To Active DirectoryExpression Node轉為Active  Directory API的操作。
3LINQ To Excel Expression Node 轉為Excel COM 呼叫。
 
.NET Framework 3.5 資料庫開發聖典一書中,第三章末尾,對這種應用及實作有相當多的著墨。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LINQ to Objects(Language-Integrated Query,语言集成查询)是.NET Framework 3.5中引入的一种查询技术,它允许在C#和VB.NET等编程语言中直接使用类似于SQL的查询语法来操作对象集合。LINQ to Objects可以简化数据访问层的代码,提高开发效率。 LINQ to Objects的主要特点包括: 1. 声明性查询:可以使用简洁的语法编写查询,而无需关心底层的数据访问细节。 2. 延迟执行:查询只会在需要结果时才会执行,这有助于提高性能。 3. 支持多种查询操作:包括筛选、排序、投影、连接等。 4. 支持动态类型:LINQ to Objects可以处理各种类型的对象,无需进行类型转换。 以下是一个简单的LINQ to Objects示例: ```csharp using System; using System.Collections.Generic; using System.Linq; class Person { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } class Program { static void Main() { List<Person> people = new List<Person> { new Person { Id = 1, Name = "张三", Age = 28 }, new Person { Id = 2, Name = "李四", Age = 32 }, new Person { Id = 3, Name = "王五", Age = 25 }, }; // 使用LINQ to Objects查询年龄大于等于30的人,并按年龄升序排列 var result = from person in people where person.Age >= 30 orderby person.Age ascending select person; // 输出查询结果 foreach (var person in result) { Console.WriteLine($"Id: {person.Id}, Name: {person.Name}, Age: {person.Age}"); } } } ``` 在这个示例中,我们首先创建了一个包含Person对象的列表,然后使用LINQ to Objects查询年龄大于等于30的人,并按年龄升序排列。最后,我们遍历查询结果并输出到控制台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值