linq可以对多种数据源和对象进行查询,如数据库、数据集、XML文档、数组等。
通过对linq的使用,可以减少代码量并优化检索操作。
LINQ关键字
from 指定数据源和范围变量
where 根据布尔表达式(由逻辑与 或 等组成)从数据源中筛选元素
select 指定查询结果中的元素所具有的类型或表现形式
group 对对查询结果按照键值进行分组
into 提供一个标示符,它可以充当对 join group 或 select 子句结果的引用
orderby 对查询出的元素进行排序
join 按照两个指定匹配条件来联接俩个数据源
let 产生一个用于查询表达式中子表达式查询结果的范围变量
下面介绍一个上课时的例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 第六次__1
{
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmailAddress { get; set; }
// Overrides the Object.ToString() to provide a
// string representation of the object properties.
public override string ToString()
{
return string.Format("{0} {1}\nEmail: {2}",
FirstName, LastName, EmailAddress);
} }
// Create a customer list with sample data public class Tester
{
private static List<Customer> CreateCustomerList()
{
List<Customer> customers = new List<Customer>
{
new Customer { FirstName = "Orlando",LastName = "Gee",
EmailAddress = "orlando0@adventure-works.com"},
new Customer { FirstName = "Keith", LastName = "Harris",
EmailAddress = "keith0@adventure-works.com" },
new Customer { FirstName = "Donna", LastName = "Carreras",
EmailAddress = "donna0@adventure-works.com" },
new Customer { FirstName = "Janet", LastName = "Gates",
EmailAddress = "janet1@adventure-works.com" },
new Customer { FirstName = "Lucy", LastName = "Harrington",
EmailAddress = "lucy0@adventure-works.com" }
};
return customers;
}
static void Main() // Main program
{
List<Customer> customers = CreateCustomerList();
IEnumerable<Customer> result = from customer in customers
where customer.FirstName == "Donna"
select customer;
Console.WriteLine("FirstName == \"Donna\"");
foreach (Customer customer in result)
{ Console.WriteLine(customer.ToString()); }
customers[3].FirstName = "Donna";
Console.WriteLine("FirstName == \"Donna\" (take two)");
foreach (Customer customer in result)
{ Console.WriteLine(customer.ToString()); }
Console.ReadLine();
}
}
}
程序运行的结果为:
首先我们创建了一个customer类,并在这给类的基础上增加了一些数据(有点想一个小型的数据库),并在主函数中查询
这些类容。
对于主函数:
static void Main() // Main program
{
List<Customer> customers = CreateCustomerList();
IEnumerable<Customer> result = from customer in customers
where customer.FirstName == "Donna"
select customer;
Console.WriteLine("FirstName == \"Donna\"");
foreach (Customer customer in result)
{ Console.WriteLine(customer.ToString()); }
customers[].FirstName = "Donna";
Console.WriteLine("FirstName == \"Donna\" (take two)");
foreach (Customer customer in result)
{ Console.WriteLine(customer.ToString()); }
Console.ReadLine();
}
首先查询了 customer.FirstName == "Donna" 的内容,并将结果输出。(这些查询语句跟数据库的查询语句差不多,学过数据库的理解起来应该很轻松)。
var这个关键字是用来声明一个隐藏类型的
我们可以用var来声明一个没有类型的变量。(这并不是表明变量没有类型,而是C#会自动识别变量的类型。)
ordering关键字则是用来给数据库中的内容进行排序以进行一些特殊的查找。
如:
orderby customer.LastName, address.Street descending
结果的集合将先以customer.LastName升序排列,再在此基础上以address.Street降序排列。
C# linq的学习及使用的更多相关文章
-
扩展方法以及LinQ的学习
我们今天学习的内容其实还是蛮多的,学习了自动属性,扩展方法,复习初始化器,以及LinQ的一些方法,其实感觉有些还是很熟悉的,在前面的学习过程中有时间感觉学习的知识知道了怎么使用,但是还没有在项目中使用 ...
-
LinQ实战学习笔记(一) LINQ to (Objects, XML, SQL) 入门初步
LINQ对于笔者来说, 优美而浓缩的代码让人震惊. 研究LINQ就是在艺术化自己的代码. 之前只是走马观花学会了基本的语法, 但是经常在CSDN看到令人惊讶自叹不如的LINQ代码, 还是让人羡慕嫉妒恨 ...
-
LinQ实战学习笔记(四) LINQ to Object, 常用查询操作符
这一篇介绍了下面的内容: 查询object数组 查询强类型数组 查询泛型字典 查询字符串 SelectMany 索引 Distinct操作符 排序 嵌套查询 分组 组连接 内连接 左外连接 交叉连接 ...
-
LinQ实战学习笔记(三) 序列,查询操作符,查询表达式,表达式树
序列 延迟查询执行 查询操作符 查询表达式 表达式树 (一) 序列 先上一段代码, 这段代码使用扩展方法实现下面的要求: 取进程列表,进行过滤(取大于10M的进程) 列表进行排序(按内存占用) 只保留 ...
-
C# linq语句学习
using System; using System.Linq; namespace ConsoleApp1 { class Program { static void Main(string[] a ...
-
LinQ实战学习笔记(二) C#增强特性
C# 为支持LINQ添加了许多语言特性: 隐式类型局部变量 对象初始化器 Lambda表达式 扩展方法 匿名类型 了解这些新特性是全面了解LINQ的重要先解条件,因此请不要忽视它们. (一) 隐式类 ...
-
Linq入门学习
千万别被这个页面的滚动条吓到!!! 我相信你一定能在30分钟之内看完它!!! 在说LINQ之前必须先说说几个重要的C#语言特性 一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之 ...
-
Linq语法学习
关键词: select from where in into join on equals orderby descending DefaultIfEmpty() thenby submitChang ...
-
常见LINQ语句学习
1.读取20条最新留言 public ActionResult Index() { var mostRecentEntries = (from entry in _db.Entries orderby ...
随机推荐
-
Java 浅析三大特性之一多态
Java 浅析三大特性之一多态 之前我们的文章讲了Java的封装和继承,封装讲的时候,并没有体现出来封装的强大之处,反而还要慎用封装.因为这时的封装还没有和多态联系到一起,还无法看出向上转型的厉害之处 ...
-
Unity3D 装备系统学习Inventory Pro 2.1.2 基础篇
前言 前一篇 Unity3D 装备系统学习Inventory Pro 2.1.2 总结 基本泛泛的对于Inventory Pro 这个插件进行了讲解,主要是想提炼下通用装备系统结构和类体系.前两天又读 ...
-
NHibernate系列文章十五:NHibernate组件
摘要 前面文章介绍了NHibernate对简单.net数据类型的映射对照表.NHibernate也可以映射复杂数据类型,这里介绍通过组件映射NHibernate值对象. 1. NHibernate引用 ...
-
MVC页面上多个提交按钮提交到不同的Action
使用mvc扩展类,ActionNameAttribute方法如下: [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, In ...
-
linux c数据库备份第三版
这个版本相对第一版更新了很多,其实我本地定义为第五版的.相对第一版主要更新内容:1.增加了定时器2.用户可以停止调备份程序3.如果备份程序正在运行,那么尝试运行提示已经在运行4.记录程序运行时的pid ...
-
SQL Server中调用WebService的实例
尊重原著作:本文转载自http://www.cnblogs.com/icycore/p/3532197.html 1.Ole Automation Procedures 服务器配置选项 当启用 OLE ...
-
PHP初入,简易网页整理(布局&;特效的使用)
html><html> <head> <meta charset="UTF-8"> <title></title> ...
-
vue 之 引入elementUI(两步走)
1.npm 引入elementUI npm i element-ui -S 2.在main.js文件中全局引入 import ElementUI from 'element-ui' import 'e ...
-
Shell-7--环境变量配置文件
环境变量配置文件修改后需要重启才生效,如果想不重启生效,需要 source 配置文件 . 配置文件
-
C++学习笔记43:STL
STL简介(standard Template Library) STL的基本组件:容器(container),迭代器(iterator),函数对象(function object) 算法(algor ...