LinQ To Object

基本概念

要创建一个LINQ查询操作,一般需要以下3个步骤.

1.准备数据源:准备LINQ查询操作所需要的数据源,如被查询的集合、关系数据库、XML等。

2.创建查询:创建查询数据的LINQ查询表达式,如:“from u in users select u”。

3.执行查询:执行上述步骤创建的LINQ查询表达式,并获取相应的结果。

LINQ包括4个组件:LINQ to Object、LINQ to SQL 、LINQ to DataSet和 LINQ to XML。它们分别能够查询和处理集合类型、关系型数据库类型、 DataSet对象类型和XML类型的数据。

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

LINQ查询表达式类似T-SQL查询语句

     from a in users select a     //a in users  跟foreach差不多,结果为一个集合,a为一个子集,users为集合   不清楚是什么类型,我们就用var result=  来接收 ,一般用foreach来遍历result

     from a in users

    where   ......(是真假)

  orderby     ...... 

    select a

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

LinQ To Object

使用LINQ能够查询任何可枚举的集合,如数组(Array和ArrayList)、泛型列表 List<T>、泛型字典Dictionary<T>等,以及用户自定义的集合。

int [] ints  ={0,1,2,3,4,5,6,7,8,9};  //数据源
var result=from u in ints              //创建查询
                   select u;
foreach (var item in result){ Console.WriteLine(item);} //执行查询
string[] username = { "张三", "李四", "王五", "关云长" };
        var result = from u in username
                     where u.Length>2    //条件
                     select u;
        foreach (var item in result)
        {
            Response.Write(item);    //结果为  关云长
        }
//联合查询应用    
class Program
{
static void Main(string[] args)
        {
            List<Student> stu = new List<Student>()
            {
                new Student(){ Name="小", Age=22,Number=2},
                new Student(){ Name="小", Age=15,Number=1},
                new Student(){ Name="小", Age=18,Number=1},
                new Student(){ Name="小", Age=19},
                new Student(){ Name="小赵", Age=8},
                new Student(){ Name="小钱", Age=9},                          
            };
            List<Class> classes = new List<Class>()
            {
                new Class(){ Number=1, Name="1"},
                new Class(){Number=2, Name="2"}
            };
        //联合查询
var temp = from a in stu join c in classes on a.Number equals c.Number //equals 相等 //where a.Number==c.Number select new { //匿名类型对象 年龄=a.Age, 姓名 = a.Name, 班级 = c.Name }; foreach (var item in temp) { //Console.WriteLine("{0}是{1},年龄为{2}岁",item.姓名,item.班级,item.年龄); string str = string.Format("{0}是{1},年龄为{2}岁", item.姓名, item.班级, item.年龄); Console.WriteLine(str); } } } class Student { string name; public string Name { get { return name; } set { name = value; } } int age; public int Age { get { return age; } set { age = value; } } int number; public int Number { get { return number; } set { number = value; } } } class Class { int number; public int Number { get { return number; } set { number = value; } } string name; public string Name { get { return name; } set { name = value; } } }
原文地址:https://www.cnblogs.com/Sea1ee/p/5943812.html