带你一文了解C#中的LINQ
什么是LINQ
LINQ(Language Integrated Query)是一种能够在编程语言中使用类SQL语句的查询技术,它允许使用类似SQL的语法对.NET Framework支持的任何数据源进行远程或本地访问,例如对象、XML、数据库或集合等等。
使用LINQ可以将常规的查询流程简化,并且易于理解和编写。
LINQ的基础概念
LINQ包含了一些基础概念,需要我们先进行了解。
查询语法和方法语法
LINQ分为两种语法形式:查询语法和方法调用语法。
查询语法使用类似SQL的语句,能够直观地表达查询需求:
var query =
from c in customers
where c.City == "London"
select c;
与之相反的方法调用语法则是通过调用一系列方法实现的,如下所示:
var query = customers
.Where(c => c.City == "London")
.Select(c => c);
延迟执行和立即执行
LINQ中的查询可以是立即执行或者延迟执行的。在立即执行的查询中,查询表达式会立即返回结果;而在延迟执行的查询中,查询表达式会返回一个IQueryable
接口的实现对象,该对象可以进一步进行处理。
下面的代码说明了对于一个查询表达式的简单例子:
var query = from c in customers
where c.City == "London"
select c;
// 立即执行
var result1 = query.ToList();
// 延迟执行
var result2 = query.Where(c => c.ContactName.Contains("John")).ToList();
Lambda表达式
Lambda表达式是一个匿名方法,可以被作为参数传递给方法和进行赋值。在LINQ中,Lambda表达式的重要作用是与LINQ的方法调用语法结合使用。
下面的代码展示了如何使用Lambda表达式进行查询:
Func<Customer, bool> predicate = c => c.City == "London";
var query = customers.Where(predicate);
LINQ的用例
对象集合查询
下面的示例展示了如何使用LINQ对集合进行查询:
class Customer {
public string Name { get; set; }
public string City { get; set; }
}
var customers = new List<Customer> {
new Customer { Name = "John", City = "London"},
new Customer { Name = "Mary", City = "Paris"},
new Customer { Name = "Bob", City = "London"},
new Customer { Name = "Alice", City = "New York"}
};
var londonCustomers = from c in customers
where c.City == "London"
select c.Name;
XML文档查询
下面的示例展示了如何使用LINQ对XML文档进行查询:
var xml = @"
<bookstore>
<book category='cooking'>
<title>Italian Cooking</title>
<author>John</author>
<price>12.99</price>
</book>
<book category='cooking'>
<title>French Cooking</title>
<author>Mary</author>
<price>15.99</price>
</book>
<book category='crime'>
<title>The Murder Case</title>
<author>Bob</author>
<price>20.99</price>
</book>
</bookstore>";
var books = XElement.Parse(xml);
var bookTitles = from b in books.Descendants("book")
where (string)b.Attribute("category") == "cooking"
select (string)b.Element("title");
以上就是“带你一文了解C#中的LINQ”的完整攻略,相信经过学习,你已经能够基础地使用LINQ进行各项查询了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:带你一文了解C#中的LINQ - Python技术站