LINQ基础_简单示例

来源:互联网 发布:软件介绍网站 编辑:程序博客网 时间:2024/05/18 01:17

原文地址:http://www.dingos.cn/index.php?topic=1976.0

在每种语言中对数据或集合操作是非常重要和麻烦的。为了对数据或集合操作更简化和有力,LINQ被结合到.NET Framework 3.5中。可以调用更有力的工具LINQ来操作数据。

在开始讨论LINQ之前,先获取一些LINQ的基础知识。

LINQ用于处理关系型数据库被称为Dlinq,也成为LINQ to SQL。当LINQ用于处理xml是给称为XLinq,也称为LINQ to XML

示例:

首先考虑一个简单的例子,仅仅针对string数组工作,一步一步的深入对集合和数据的工作。

在第一个例子中,使用LINQstring数组中查找长度大于6的名字。

using System;

using System.Collections;

using System.Linq;

 

class Test{

    static void Main(string[] args){

       // 声明字符串数组

       string[] names = {"arun", "ram", "karthi" ,

           "arulkumar","balaji","dineshKumar"};

      

        // linq中存储结果

       IEnumerable nameCollecetion = from n in names

           where n.Length > 6

           select n;

      

       // 打印结果

       foreach (string name in nameCollecetion)

           Console.WriteLine(name);

       Console.ReadKey();

    }

}

 

在上面的例子中,from n in names有点类似于类似于foreach循环,考虑上面代码使用foreach如下实现:

foreach(string n in names){

    if(n.length>6)

       nameCollection.add(n);

}

我想现在对上面linq的例子有点想法。

也可以在linq中做一些聚合操作,一个简单的数学计算。

 

示例:使用linq查找最大数和最小数。

static void Main(string[] args){

    int[] numbers = { 8, 4, 5, 6, 9, 7, 77, 55, 66, 99, 22, 55, 45 };

   

    // 找最小值

    int minno = numbers.Min();     

    // 找最大值

    int maxno = numbers.Max();

 

    Console.WriteLine(minno);

    Console.WriteLine();

    Console.WriteLine(maxno);

    Console.ReadKey();

}

 

var

首先看到在LINQ中使用var关键字。当C#编译器遇到了var会检测变量右边的数据类型,然后将左边的变量转换为这个类型。

// 转换intvar为整型

var intvar=10;

 

// 转换stringvarstring类型

var stringvar="string";

 

// 转换charvar为字符类型

var charvar='a'; 

 

现在看一个和上面使用linq相同的例子。例如查找names中长度大于6的名字。

string[] names = { "arun", "ram", "karthi", "arulkumar", "balaji",

    "dineshKumar" };

// longnames转换为字符串数组用于存储LINQ查询返回的结果

var longnames = from n in names

    where n.Length > 6

    select n;

 

// 打印出longnames中所有的值

foreach (var name in longnames)

    Console.WriteLine(name);

Console.ReadKey();

 

LINQ中集合的使用

使用LINQ操作简单的类和集合。首先创建一个(Employee)类具有idname属性。

public class Employee{

    private string _empID;

    private string _empName;

    public Person(){}

    public string  EmpID{
        get { return _empID; }

        set{_empID = value; }

    }

    public string EmpName{

        get { return _empName; }

        set {_empName = value; }

    }

}

现在创建一个Employee对象集合。

List emp = new List{

    new Employee{EmpID =1,EmpName="priya",Sex="Female"},

    new Employee{EmpID =2,EmpName="Arun",Sex="Male"},

    new Employee{EmpID =3,EmpName="Balaji",Sex="Male"},

    new Employee{EmpID =4,EmpName="Aruna",Sex="Female"}};

 

// 选择男职员并按他们的名字排序

var maleEmps = from empl in emp

    where empl.Sex == "Male"

    orderby empl.EmpName

    select empl;

 

// 定义出男职员的ID和名字

foreach (var person in maleEmps)

    Console.WriteLine(person.EmpID + " " + person.EmpName);

Console.ReadKey();