LINQ to Objects可以使用支持IEnumerable<T> 的任何LINQ查询来访问内存中的数据集合,而无需使用LINQ提供程序(API),例如LINQ to SQL或LINQ to XML。
LINQ对象介绍
LINQ to Objects中的查询仅返回通常为IEnumerable<T> 类型的变量,简而言之,LINQ to Objects提供了一种较新的集合方法,为从集合中检索数据编写长编码(非常复杂的foreach循环)至关重要,现在已被编写明确描述所需数据的声明性代码所取代需要检索。
与传统的foreach循环相比,LINQ to Objects还具有许多优点,如更具可读性,强大的过滤功能,分组功能,使用最少的应用程序编码即可增强排序功能。这样的LINQ查询本质上也更紧凑,并且可以在不进行任何修改或稍加修改的情况下移植到任何其他数据源。
以下是一个简单的LINQ to Objects示例-
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LINQtoObjects { class Program { static void Main(string[] args) { string[] tools = { "Tablesaw", "Bandsaw", "Planer", "Jointer", "Drill", "Sander" }; var list = from t in tools select t; StringBuilder sb = new StringBuilder(); foreach (string s in list) { sb.Append(s + Environment.NewLine); } Console.WriteLine(sb.ToString(), "Tools"); Console.ReadLine(); } } }
在该示例中,字符串(工具)数组用作要使用LINQ to Objects查询的对象的集合。
Objects query is: var list = from t in tools select t;
编译并执行上述代码后,将产生以下输出-
Tablesaw Bandsaw Planer Jointer Drill Sander
内存集合查询
C#
using System; using System.Collections.Generic; using System.Linq; namespace LINQtoObjects { class Department { public int DepartmentId { get; set; } public string Name { get; set; } } class LinqToObjects { static void Main(string[] args) { List<Department> departments = new List<Department>(); departments.Add(new Department { DepartmentId = 1, Name = "Account" }); departments.Add(new Department { DepartmentId = 2, Name = "Sales" }); departments.Add(new Department { DepartmentId = 3, Name = "Marketing" }); var departmentList = from d in departments select d; foreach (var dept in departmentList) { Console.WriteLine("Department Id={0} , Department Name={1}", dept.DepartmentId, dept.Name); } Console.WriteLine("\nPress any key to continue."); Console.ReadKey(); } } }
VB
Imports System.Collections.Generic Imports System.Linq Module Module1 Sub Main(ByVal args As String()) Dim account As New Department With {.Name = "Account", .DepartmentId = 1} Dim sales As New Department With {.Name = "Sales", .DepartmentId = 2} Dim marketing As New Department With {.Name = "Marketing", .DepartmentId = 3} Dim departments As New System.Collections.Generic.List(Of Department)(New Department() {account, sales, marketing}) Dim departmentList = From d In departments For Each dept In departmentList Console.WriteLine("Department Id={0} , Department Name={1}", dept.DepartmentId, dept.Name) Next Console.WriteLine(vbLf & "Press any key to continue.") Console.ReadKey() End Sub Class Department Public Property Name As String Public Property DepartmentId As Integer End Class End Module
编译并执行以上C#或VB的代码时,将产生以下输出-
Department Id=1, Department Name=Account Department Id=2, Department Name=Sales Department Id=3, Department Name=Marketing Press any key to continue.
参考链接
https://www.learnfk.com/linq/linq-objects.html
标签:教程,Console,Name,System,LINQ,无涯,DepartmentId,Department From: https://blog.51cto.com/u_14033984/8760035