C# linq语句学习

using System;
using System.Linq;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr = { 1, 2, 3, 4, 5, 6 };
            var a = from num in arr
                    where num % 2 == 0
                    select num;
            foreach (var i in a)
            {
                Console.WriteLine(i);
            }
            Console.ReadKey();
            var b = arr.Where(x => x % 2 == 0).OrderBy(n=>n);

            foreach (var i in b)
            {
                Console.WriteLine(i);
            }
            Console.ReadKey();
        }
    }
}

使用LINQ查询.NET对象

using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Student> list = new List<Student>()
            {
                new Student() { Name="张三丰", sex="", Age=108 },
                new Student() { Name="李三丰", sex="", Age=108 },
                new Student() { Name="李三丰", sex="", Age=108 }
            };
            var query = from item in list
                        where item.Name.StartsWith("") && item.sex == ""
                        select item;
            foreach(var item in query)
            {
                Console.WriteLine(item.Name);
            }
            Console.ReadKey();

        }
    }
}

 查询语句用用查询方法代替: 

var query = list.Where(item => item.Name.StartsWith("") && item.sex == "");

 

查询类型是ArrayList的是需要在变量前增加类型的定义:

using System;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList list = new ArrayList()
            {
                new Student() { Name="张三丰", sex="", Age=108 },
                new Student() { Name="李三丰", sex="", Age=108 },
                new Student() { Name="李三丰", sex="", Age=108 }
            };
             var query = from Student item in list where item.Name.StartsWith("") && item.sex == "" select item;
            foreach (Student item in query)
            {
                Console.WriteLine(item.Name);
            }
            Console.ReadKey();

        }
    }
}

 

用索引器筛选:

             List<Student> list = new List<Student>(){
                     new Student(){ Name="张三丰", Sex="", Age=21 },
                     new Student(){ Name="张三丰", Sex="", Age=21 },
                     new Student(){ Name="李三丰", Sex="", Age=21 },
                     new Student(){ Name="李三丰", Sex="", Age=21 },
                     new Student(){ Name="李四", Sex="", Age=21 },
             };
             var query = list.Where(( item,index )=>item.Name.StartsWith("")&&item.Sex==""&&index%2==0);
             foreach(Student stu in query){
                 Console.WriteLine(stu.Name);
             }

类型筛选:

            object[] arr = {"str",1,3,"mlh"};
            var query = arr.OfType<string>();
            foreach(var item in query){
                Console.WriteLine(item);
            }

 复合的from子句

            List<Student> list = new List<Student>(){
                new Student(){ Name="张三丰", Sex="", Age=new int[]{ 21,23} },
                    new Student(){ Name="张三丰", Sex="", Age=new int[]{ 21,32 } },
                    new Student(){ Name="李三丰", Sex="", Age=new int[]{ 21,35 } },
                    new Student(){ Name="李三丰", Sex="", Age=new int[]{ 21,36 } },
                    new Student(){ Name="李四", Sex="", Age=new int[]{ 21,3} },
            };
            var query =from item in list
                from age in item.Age
                where age==3
                select item;
            foreach(Student stu in query){
                Console.WriteLine(stu.Name);
            }

 

select子句:

 

            List<Student> list = new List<Student>(){
                new Student(){ Name="张三丰", Sex="", Age=new int[]{ 21,23} },
                    new Student(){ Name="张三丰", Sex="", Age=new int[]{ 21,32 } },
                    new Student(){ Name="李三丰", Sex="", Age=new int[]{ 21,35 } },
                    new Student(){ Name="李三丰", Sex="", Age=new int[]{ 21,36 } },
                    new Student(){ Name="李四", Sex="", Age=new int[]{ 21,3} },
            };
            var query =from item in list
                from age in item.Age
                where age==3
                select item.Name;
            foreach(string item in query){
                Console.WriteLine(item);
            }

 查询方法:

            List<Student> list = new List<Student>(){
                new Student(){ Name="张三丰", Sex="", Age=new int[]{ 21,23} },
                    new Student(){ Name="张三丰", Sex="", Age=new int[]{ 21,32 } },
                    new Student(){ Name="李三丰", Sex="", Age=new int[]{ 21,35 } },
                    new Student(){ Name="李三丰", Sex="", Age=new int[]{ 21,36 } },
                    new Student(){ Name="李四", Sex="", Age=new int[]{ 21,3} },
            };
            var query = list.Where((item) => {
                    return item.Name.StartsWith("");
                    }).Select(item=>item.Name);
            foreach(string item in query){
                Console.WriteLine(item);
            }

 group by 分组:

            List<Student> list = new List<Student>(){
                new Student(){Name="梅林辉",Sex="",Age=new int[]{20,30}},
                    new Student(){Name="梅辉",Sex="",Age=new int[]{20,30}},
                    new Student(){Name="",Sex="",Age=new int[]{20,30}},
                    new Student(){Name="石盐",Sex="",Age=new int[]{10,11}},
                    new Student(){Name="梅盐",Sex="",Age=new int[]{10,11}},
            };
            var query = from item in list
                group item by item.Sex;foreach(var stu in query){
                foreach(var item in stu){
                    Console.WriteLine(item.Name);
                }
            }

 

转载于:https://www.cnblogs.com/mlh1421/p/10787225.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值