Linq简单用法

Linq用于方便用户操作集合对象而定义的扩展方法,这些扩展方法是LINQ的查询操作符。
扩展方法包括:Where,Max,Select,Sum,Any,Average,All,Concat等
简单用法:from v in arr where v > 3 select v
// from [type] id in source
type为可选,id是集合中一项目,source表示一个集合,如果集合中的类型与type指定的类型不同则导致强制类型转化
// [join [type] id in source on expr equals expr [into subGroup]]
一个查询表达式中可以有0个或多个join子句,这里的source可以是一个全新的集合,可以不等于第一句中的source
expr可以是一个表达式
[into subGroup] subGroup是一个中间变量,它继承自IGrouping,代表一个分组,也就是说“一对多”里的“多”

可以通过这个变量得到这一组包含的对象个数,以及这一组对象的键

// [from [type] id in source | let id = expr | where condition]
一个查询表达式中可以有1个或多个from子句

一个查询表达式中可以有0个或多个let子句,let子句可以创建一个临时变量

from u in users 
    let number = Int32.Parse(u.Username)
    where u.ID < 9 && number % 2 == 0 select u
//  [orderby ordering,ordering,ordering...]

   排序

from p in db.Products  
 group p by p.CategoryID into g 
 // select expr | group expr by key
   一个查询表达式必须以select或者group by结束

   select后跟要检索的内容

// [into id query]

   将前面语句的结果作为后面语句操作的数据源 相当于sql中的as,创建一个临时存储器,可以存储group或者select等子句的结果

from p in db.Employees
     select new
     {
         LastName = p.LastName,
         TitleOfCourtesy = p.TitleOfCourtesy
     } into EmployeesList
     orderby EmployeesList.TitleOfCourtesy ascending
     select EmployeesList;

1、简单数组用法

public void LinqTest()
        {
            List<int> arr = new List<int>() { 1, 2, 3, 4, 5, 8, 9, 10 };
            //where使用
            List<int> arr_result = arr.Where(a => { return a % 2 == 0; }).ToList();
            //from用法,order by 默认的排序方式为升序(ascending),降序为:descending.
            List<int> arr_result1 = (from v in arr where v > 3 orderby v ascending select v).ToList();
            //也可以调用其它方法
            List<int> arr_result2 = (from v in arr where CheckNum(v) select v).ToList();
            //也可以多次嵌套查询
            List<int> arr_result3 = (from v in 
                                               (from v_in in arr where v_in > 3 select v_in)
                                                                                             select v).ToList();
        }
        //外部方法
        static bool CheckNum(int temp)
        {
            if (temp > 2 && temp < 5) { return true; }
            else
                return false;
        }

2、简单对象用法

public class UserInfo
    {
        public string name { get; set; }
        public int id { get; set; }
        public float salary { get; set; }
    }
    public void LinqTest2()
    {
         List<UserInfo> users1 = new List<UserInfo>();
        List<UserInfo> users2 = new List<UserInfo>();
        for (int i = 0; i < 10; i++)
        {
            users1.Add(new UserInfo { name = "username" + i.ToString(), id = i, salary = i * 1000 });
            users2.Add(new UserInfo { name = "username" + i.ToString(), id = i, salary = i * 1000 });
        }
        //获取的是一个int类型的可枚举集合
        //select子句决定了获取的数据的类型,user.salary * 0.9为获取的值
        var valid_salarys = from user in users1 select user.salary * 0.9;
        //多个类from查询
        var valid_salarys2 = from user1 in users1
                            from user2 in users2
                            where user1.salary > 1000 && user2.id == user1.id
                            select user1.salary * 0.9;
        foreach (var varlid_salary in valid_salarys)
        {
            //this.TextBox1.Text = this.TextBox1.Text + "," + varlid_salary;
        }
    }

3、LIST只取其中一个字段列,并去重复

List<YJZH_SCRWBM> rwList

//只保留一列,并去掉重复项
List<string> jdbmList = rwList.Select(x => x.JDBM).Distinct().ToList();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值