• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#linq的学习及使用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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 = "[email protected]"},
                new Customer { FirstName = "Keith", LastName = "Harris",
                                    EmailAddress = "[email protected]" },
                new Customer { FirstName = "Donna", LastName = "Carreras",
                                    EmailAddress = "[email protected]" },
                new Customer { FirstName = "Janet", LastName = "Gates",
                                    EmailAddress = "[email protected]" },
                new Customer { FirstName = "Lucy", LastName = "Harrington",
                                    EmailAddress = "[email protected]" }
            };
            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[3].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降序排列。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap