C#LINQ

LINQ,语言集成查询(Language Integrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。

废话不多说,直接上代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LINQ
{
//武林高手的类
    class MartialArtsExperts
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public string Menpai { get; set; }
        public string Kungfu { get; set;}
        public int Level { get; set; }

        public override string ToString()
        {
            return string.Format("Id:{0},Name:{1},Kungfu:{2},Level:{3},Age:{4}", Id, Name, Kungfu,Level,Age);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LINQ
{
//武学的类
    class KongFu
    {
        public int KongfuId { get; set; }
        public string KongfuName { get; set; }
        public int Lethality { get; set; }
        public override string ToString()
        {
            return string.Format("Id:{0},Name:{1},Power:{2}",KongfuId,KongfuName,Lethality);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LINQ
{
    class Program
    {
     static bool Test1(MartialArtsExperts master)
        {
            return master.Level > 8;
        }
        static void Main(string[] args)
        {
            //初始化武林高手
            var masterList = new List<MartialArtsExperts>()
            {
                new MartialArtsExperts(){ Id = 1, Name = "黄蓉",    Age = 18, Menpai = "丐帮", Kungfu = "打狗棒法",  Level = 9  },
                new MartialArtsExperts(){ Id = 2, Name = "洪七公",  Age = 70, Menpai = "丐帮", Kungfu = "打狗棒法",  Level = 10 },
                new MartialArtsExperts(){ Id = 3, Name = "郭靖",    Age = 22, Menpai = "丐帮", Kungfu = "降龙十八掌",Level = 10 },
                new MartialArtsExperts(){ Id = 4, Name = "任我行",  Age = 50, Menpai = "明教", Kungfu = "葵花宝典",  Level = 1  },
                new MartialArtsExperts(){ Id = 5, Name = "东方不败",Age = 35, Menpai = "明教", Kungfu = "葵花宝典",  Level = 10 },
                new MartialArtsExperts(){ Id = 6, Name = "林平之",  Age = 23, Menpai = "华山", Kungfu = "葵花宝典",  Level = 7  },
                new MartialArtsExperts(){ Id = 7, Name = "岳不群",  Age = 50, Menpai = "华山", Kungfu = "葵花宝典",  Level = 8  },
                new MartialArtsExperts() { Id = 8, Name = "令狐冲", Age = 23, Menpai = "华山", Kungfu = "独孤九剑", Level = 10 },
                new MartialArtsExperts() { Id = 9, Name = "梅超风", Age = 23, Menpai = "桃花岛", Kungfu = "九阴真经", Level = 8 },
                new MartialArtsExperts() { Id =10, Name = "黄药师", Age = 23, Menpai = "梅花岛", Kungfu = "弹指神通", Level = 10 },
                new MartialArtsExperts() { Id = 11, Name = "风清扬", Age = 23, Menpai = "华山", Kungfu = "独孤九剑", Level = 10 }
            };
            //初始化武学
            var kongfuList = new List<KongFu>()
            {
                new KongFu(){KongfuId=1, KongfuName="打狗棒法", Lethality=90},
                new KongFu(){KongfuId=2, KongfuName="降龙十八掌", Lethality=95},
                new KongFu(){KongfuId=3, KongfuName="葵花宝典", Lethality=100},
                new KongFu() { KongfuId=  4, KongfuName = "独孤九剑", Lethality = 100 },
                new KongFu() { KongfuId = 5, KongfuName = "九阴真经", Lethality = 100 },
                new KongFu() { KongfuId = 6, KongfuName = "弹指神通", Lethality = 100 }
            };
             //1.查詢所有武學級別大於8,并且是丐帮的武林高手
            //使用LINQ做查询(表达式写法)
            var res1 = from m in masterList//from後面設置查詢的集合
                      where m.Level > 8 &&m.Menpai=="丐帮"//設置查詢條件
                      select m.Name;//返回m的結果
            foreach (var s in res1)
            {
                Console.WriteLine(s);
            }
             //2.扩充方式写法
            var res2 = masterList.Where(Test1);
            foreach (var s in res2)
            {
                Console.WriteLine(s);
            }
            //3.联合查询
            var res3 = from m in masterList
                      from k in kongfuList
                      where m.Kungfu == k.KongfuName
                      select m;
            foreach (var s in res3)
            {
                Console.WriteLine(s);
            }
         //4.排序orderby
            var res4 = from m in masterList//from後面設置查詢的集合
                      where m.Level > 8 && m.Menpai == "丐帮"//設置查詢條件
                      //orderby m.Age descending//倒序
                      orderby m.Level, m.Age//等级相同则按下一个字段排序
                      select m;//返回m的結果
            foreach (var s in res4)
            {
                Console.WriteLine(s);
            }
             //5.join on 联合查询
            var res5 = from m in masterList
                      join k in kongfuList on m.Kungfu equals k.KongfuName
                      where k.Lethality > 90
                      select new { master = m, kongfu = k };
            foreach (var s in res5)
            {
                Console.WriteLine(s);
            }
      //6.按照自身字段分组group
            var res6 = from m in masterList
                      group m by m.Menpai into g
                      select new { count = g.Count(), key = g.Key };//g.key,key表示按照哪个属性分的组
            foreach (var item in res6)
            {
                Console.WriteLine(item);
            }
             //7.量词操作符 any all判断集合中是否满足某个条件
            bool res7 = masterList.Any(m=>m.Menpai=="丐帮");//any只要其中有一个满足就好
            bool res8 = masterList.All(m=>m.Menpai=="丐帮");
         }
     }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值