Linq练习

首先在Program.cs的Main()方法下添加如下代码:

string[]
names = { "heh", "haha", "huahua", "kuku" };

1、取得以h开头的名称:

(查询语法)

var queryResult = from n in names
where
n.StartsWith("h")
select n;

(方法语法)

var queryResult = names.Where(n =>
n.StartsWith("h"));

2、将查询结果排序
(降序):

(查询语法,由于首字母一样,所以按第二个字母的顺序进行降序)

var queryResult = from n in names
where
n.StartsWith("h")
orderby n descending

select n;

(方法语法)

var queryResult =
names.Where(n=>n.StartsWith("h")).OrderByDescending(n=>n);


在Main()方法中添加如下代码:

int[]
numbers = {2,4,5,1,55,11,32,134,11,333,245 };

1、找出大于100的数:

(查询语法)

var queryResult = from n in numbers
where n
> 100
select n;

(方法语法)

var queryResult = numbers.Where(n=>n>100);

2、分别输出结果的个数,结果中的最小值,结果中的最大值,数字结果的平均值,所有数字结果的总和:

Console.WriteLine("结果的个数:"+queryResult.Count());

Console.WriteLine("结果中的最小值:"+queryResult.Min());

Console.WriteLine("结果中的最大值:"+queryResult.Max());

Console.WriteLine("结果中的平均值:"+queryResult.Average());

Console.WriteLine("数字结果的总和:"+queryResult.Sum());


查询复杂对象,在Program类的开头,给Customer类添加如下类定义:

class Customer

{

public string ID { get; set; }

public string City { get; set; }

public string Country { get; set; }

public string Region { get; set; }

public decimal Sales { get; set; }

public override string ToString()

{

return "ID:" + ID + "City:" + City + "Country:" + Country + "Region:"
+ Region + "Sales:" + Sales;

}

}

在Main()方法中添加如下代码:

List<Customer> customers = new List<Customer> {

new Customer{ID="A",City="New
York1",Country="USA1",Region="North1",Sales=111},

new Customer{ID="B",City="New
York2",Country="USA2",Region="North2",Sales=222},

new Customer{ID="C",City="New
York3",Country="USA3",Region="North3",Sales=333},

new Customer{ID="D",City="New
York4",Country="USA4",Region="North4",Sales=444},

new Customer{ID="E",City="New
York5",Country="USA5",Region="North5",Sales=555},

new Customer{ID="F",City="New
York6",Country="USA6",Region="North6",Sales=666},

new Customer{ID="G",City="New
York7",Country="USA7",Region="North7",Sales=777}

};

1、选择来自North1的顾客:

(查询语法)

var queryResults = from c in customers

where c.Region == "North1"
select c;

(方法语法)

var queryResults = customers.Where(n=>n.Region=="North1");

2、投射--在查询中创建新的对象:

(查询语法)

var queryResults = from c in customers

where c.Region == "North7"
select new
{c.City,c.Country,c.ID };

(方法语法,在查询语法中需要select子句,但在之前的例子中没有看到Select()方法,因为在Linq方法语法中不需要它,除非在进行投射)

var queryResults = customers.Where(n => n.Region == "North7").Select(c
=> new {c.City,c.Country,c.ID });

3、投射--单值选择查询(取得不重复的Region值)

(查询语法)

var queryResults=(from n in customers select c.Region).Distinct();

(方法语法)

var queryResults=customers.Select(c=>c.Region).Distinct();

Linq练习,布布扣,bubuko.com

时间: 2024-10-10 20:46:33

Linq练习的相关文章

.NET深入解析LINQ框架(五:IQueryable、IQueryProvider接口详解)

阅读目录: 1.环路执行对象模型.碎片化执行模型(假递归式调用) 2.N层对象执行模型(纵横向对比链式扩展方法) 3.LINQ查询表达式和链式查询方法其实都是空壳子 4.详细的对象结构图(对象的执行原理) 5.IQueryable<T>与IQueryProvider一对一的关系能否改成一对多的关系 6.完整的自定义查询 1]. 环路执行对象模型.碎片化执行模型(假递归式调用) 这个主题扯的可能有点远,但是它关系着整个LINQ框架的设计结构,至少在我还没有搞懂LINQ的本意之前,在我脑海里一直频

.NET深入解析LINQ框架(一:LINQ优雅的前奏)

阅读目录: 1.LINQ简述 2.LINQ优雅前奏的音符 2.1.隐式类型 (由编辑器自动根据表达式推断出对象的最终类型) 2.2.对象初始化器 (简化了对象的创建及初始化的过程) 2.3.Lambda表达式 (对匿名方法的改进,加入了委托签名的类型推断并很好的与表达式树的结合) 2.4.扩展方法 (允许在不修改类型的内部代码的情况下为类型添加独立的行为) 2.5.匿名类型 (由对象初始化器推断得出的类型,该类型在编译后自动创建) 2.6.表达式目录树(用数据结构表示程序逻辑代码) 3.LINQ

.NET深入解析LINQ框架(二:LINQ优雅的前奏)

阅读目录: 1.LINQ框架的主要设计模型 1.1.链式设计模式 (以流水线般的链接方式设计系统逻辑) 1.2.链式查询方法(逐步加工查询表达式中的每一个工作点) 2.LINQ框架的核心设计原理 2.1.托管语言之上的语言(LINQ查询表达式) 2.2.托管语言构造的基础(LINQ依附通用接口与查询操作符对应的方法对接) 2.3.深入IEnumerable.IEnumerable<T>.Enumerable(LINQ to Object框架的入口) 2.4.深入IQueryable.IQuer

.NET深入解析LINQ框架(四:IQueryable、IQueryProvider接口详解)

阅读目录: 1.开篇介绍 2.扩展Linq to Object (应用框架具有查询功能) 2.1.通过添加IEnumerable<T>对象的扩展方法 2.2.通过继承IEnumerable<T>接口 2.3.详细的对象结构图 3.实现IQueryable<T> .IQueryProvider接口 3.1.延迟加载IEnumertor<T>对象(提高系统性能) 3.2.扩展方法的扩展对象之奥秘(this IQueryable<TSource> so

.NET深入解析LINQ框架(三:LINQ优雅的前奏)

阅读目录: 1.动态LINQ查询(动态构建Expression<T>表达式树) 2.DLR动态语言运行时(基于CLR之上的动态语言运行时) 1].动态LINQ查询(动态构建Expression<T>表达式树) 什么是动态LINQ查询?LINQ的编写是静态的,因为C#是基于静态类型系统原理设计的,在编写时已经确定类型,也就是在编译时就已经知道将要执行什么样的查询,条件是什么.排序方式是什么等等.那么很大一部分应用场合中我们需要根据用户的选择来查询数据源,以往我们都是通过判断的方式来拼

.NET深入解析LINQ框架(六:LINQ执行表达式)

阅读目录: 1.LINQ执行表达式 在看本篇文章之前我假设您已经具备我之前分析的一些原理知识,因为这章所要讲的内容是建立在之前的一系列知识点之上的,为了保证您的阅读顺利建议您先阅读本人的LINQ系列文章的前几篇或者您已经具备比较深入的LINQ原理知识体系,防止耽误您的宝贵时间. 到目前为止我们对LINQ的执行原理已经很清楚了,从它的前期构想到它真正为我们所用都有足够的证据,但是似乎问题并没有我们想的那么简单,问题总是在我们使用中频频出现尤其是新技术的使用,当然有问题才能有进步. 一:LINQ执行

应用开发之Linq和EF

上一章笔者对于WinForm开发过程用到的几个知识点做了讲解.笔者们可以以此为开端进行学习.而本章我们来讲一个跟ORM思想有关的知识点.在讲之前让我们想一下关于JAVA的hibernate知识点.hibernate也是ORM框架.记得hibernate里面有一个叫HQL.先不管HQL的好与坏.主要是明白HQL的目地是什么.ORM的思想就是为了让用户在操作数据的时候用上面向对象的思想来看,而不是二维数据了.所以HQL笔者认为就是一个面向对象思想的SQL语句.那么为什么笔者要讲到HQL呢?事实上笔者

Linq to List

var lstMater = lst.GroupBy(w => new { w.materialId, w.name, w.isPass, w.description }). Select(g => new View_El_MyCourse_MaterialInfo { description = g.Key.description, isPass = g.Key.isPass, materialId = g.Key.materialId, name = g.Key.name }).Order

几种查询方法(lambda Linq Enumerable静态类方式)

1.需要一个数据源类: using System; using System.Collections.Generic; namespace Linq { public class Student { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } public class Data { public static List<Student> studentLi

Linq To Nhibernate 性能优化(入门级)

最近都是在用Nhibernate和数据库打交道,说实话的,我觉得Nhibernate比Ado.Net更好用,但是在对于一些复杂的查询Nhibernate还是比不上Ado.Net.废话不多说了,下面讲讲Linq To Nhibernate的性能优化. 第一点:应该要分清楚当前代码是在数据库上执行,还是在内存中执行(或者什么时候应该在数据库上做,什么时候应该在内存做) 我们在在做查询的时候,常见的使用方法 上面是使用了Iqueryable接口的,它会把数据先筛完了之后,再返回给我们 这个在数据库里呢