您的位置:首页 > 编程语言 > C#

C# LINQ的用法

2011-09-05 16:11 204 查看
101LINQ 经典实例啊

参考地址:http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx

---------------------------------------------------------------------

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

using System.Web.UI;

using System.Web;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

List<Student> list = new List<Student>();

list.Add(new Student(31,"xdaoming","man",14));

list.Add(new Student(31, "xdaoming", "women", 33));

list.Add(new Student(31, "xdaoming", "man", 22));

list.Add(new Student(1,"xaaob","women",18));

list.Add(new Student(23,"xcaoh","man",11));

list.Add(new Student(23,"das","man",11));

var dd = from stu in list

where stu.Name.StartsWith("x") //筛选出姓名从x开始的学员

orderby stu.Name.Substring(1,1) descending,stu.Age descending//复合排序

select stu;

foreach (Student s in dd)

{

Console.WriteLine(string.Format("{0} {1} {2} {3}",s.ID,s.Name,s.Sex,s.Age));

}

Console.ReadLine();

}

}

public class Student

{

public int ID { get; set; }

public string Name { get; set; }

public string Sex { get; set; }

public int Age { get; set; }

public Student(int id, string name, string sex, int age)

{

this.ID = id;

this.Name = name;

this.Sex = sex;

this.Age = age;

}

}

}

-----------------------------

过滤重复值

public void Linq46()

{

int[] factorsOf300 = { 2, 2, 3, 5, 5 };

var uniqueFactors = factorsOf300.Distinct();

Console.WriteLine("Prime factors of 300:");

foreach (var f in uniqueFactors)

{

Console.WriteLine(f);

}

}

---------------------------

实现分组

分组查询和SQL语句中的带有“group”关键字的查询功能类似,它能够把查询结果按照关键字进行分组。

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

var group = from num in numbers

group num by num % 5 into g

select new { Remainder = g.Key, Numbers = g };

foreach (var item in group)

{

Console.WriteLine(string.Format("remain:", item.Remainder, item.Numbers));

foreach (var i in item.Numbers)

{

Console.WriteLine("number:" + i.ToString());

}

}

---------------------------

实现聚集查询

LINQ不仅能够实现复杂的查询,也可以实现和SQL相同的聚集和联合查询,包括获取最大值、最小值、平均值和计数等。

1。实现计数

使用Count()方法返回集合项的数目,使用方法示例代码如下:

var num = (from s in names select s.ToLower()).Count();

2。求最大值和最小值

返回最大值、最小值的方法和计数方法基本相同,也有两种表达方式,混合模式示例代码如下:

int maxLength = (from s in names select s.Length).Max();//混合模式求最大值

int minLength = (from s in names select s.Length).Min();//混合模式求最小值

3。求平均值

使用Average()方法返回集合的平均值,也有两种表达方式,混合模式和纯粹查询模式。

4。返回集合的总和

使用Sum()方法可以获取集合的总和,也有两种表达方式,混合模式和纯粹查询模式。

---------------------------

【本节示例参考:\源代码\C14\ Example_LINQSkip】

在编程中我们常常需要跳过某一段项目获取另一段的值,如分页就需要这样处理,没有LINQ前,实现分页比较麻烦,现在LINQ提供了分区类查询方法,实现分页就易如反掌,下面看看它的强大功能吧。

分区类查询使用Take,、Skip、TakeWhile、SkipWhile来共同实现,其中,

Take:提取指定数量的项;

Skip:跳过指定数量的项并获取剩余的项;

TakeWhile:根据指定条件提取项;

SkipWhile:根据指定条件跳过项。

下面使用一个简单的例子演示Take/Skip的用法。

01 int[] numbers = new int[] { 1,2,3,4,5,6,7,8,9,10};

02 //分区类查询

03 var num5 = numbers.Skip(1).Take(2);

04 foreach (var item in num5)

05 {

06 Console.WriteLine("分区类查询结果={0}",item);

07 }

----------------------------------------------------------------------------------------

LINQ 关联表

var output = (from sub in context.Tbl_SubCompany

join dept in context.Tbl_Department

on sub.SubCompanyId equals dept.SubCompanyID

where sub.Ins_no == InsNo

select new

{

dept.DepartmentID,

dept.DepartmentName

}).ToList().SerializeObject();

---------------------------------------------------

101LINQ 经典实例啊

参考地址:http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: