LINQ join/left join/cross join/group by/group join/sortedlist/cast

 
  
    public class Classroom
    {
        /// <summary>
        /// 班级Id
        /// </summary>
        public int ClassId { get; set; }
        /// <summary>
        /// 班级名称
        /// </summary>
        public string ClassName { get; set; }

    }
    public class Student
    {
        /// <summary>
        /// 学生编号
        /// </summary>
        public int StuId { get; set; }
        /// <summary>
        /// 学生姓名
        /// </summary>
        public string StuName { get; set; }

        /// <summary>
        /// 班级ID
        /// </summary>
        public int ClassId { get; set; }

        /// <summary>
        /// 班级
        /// </summary>
        public Classroom Classrooms { get; set; }

    }
    public class Score
    {
        /// <summary>
        /// 分数Id
        /// </summary>
        public int ScoreId { get; set; }
        /// <summary>
        /// 学科名称
        /// </summary>
        public string ItemName { get; set; }
        /// <summary>
        /// 学生ID
        /// </summary>
        public int StuId { get; set; }
        /// <summary>
        /// 学生
        /// </summary>
        public Student Students { get; set; }
        /// <summary>
        /// 分数
        /// </summary>
        public double Scores { get; set; }
    }
   
    public class Program
    {
        
       

        static void Main()
        {
            List<Student> lstStudent = new List<Student>
            {
                new Student{StuId=1,StuName="stu1",ClassId=1},
                new Student{StuId=2,StuName="stu2",ClassId=2},
                new Student{StuId=4,StuName="stu3",ClassId=2}
            };
            List<Classroom> lstClassRoom = new List<Classroom>
            {
                new Classroom{ ClassId=1, ClassName="class1"},
                new Classroom{ ClassId=2, ClassName="class2"},
            };
            List<Score> lstScores = new List<Score>
            {
                new Score{ ItemName="Chinese", ScoreId=1, StuId=1, Scores=90},
                new Score{ ItemName="Chinese2", ScoreId=2, StuId=2,Scores=80},
                new Score{ ItemName="Chinese3", ScoreId=3, StuId=5,Scores=80}
            };
            //内连接
            var query1=lstStudent.Join(lstScores, stu => stu.StuId, score => score.StuId, (stu, score) => new { name = stu.StuName, Item = score.ItemName, scores = score.Scores });
            //内连接2
            query1 = from a in lstStudent
                     join b in lstScores
                     on a.StuId equals b.StuId
                     select new
                     {
                         name = a.StuName,
                         Item = b.ItemName,
                         scores = b.Scores,
                     };
            //左链接
            query1 = from a in lstStudent.AsEnumerable()
                     join b in lstScores
                     on a.StuId equals b.StuId
                     into temp
                     from m in temp.DefaultIfEmpty(new Score{ StuId=a.StuId , ItemName = "没参考", Scores = 0 })
                     select new
                     {
                         name=a.StuName,
                         Item = m.ItemName,
                         scores = m.Scores,
                     };
            //表A.GroupJoin(表B,表A外键,表B外键,处理方法)
            //表A中数据全显示,表B关联上的就显示,否则为空,类似于左查询
            query1 = lstStudent.GroupJoin(lstScores, m => m.StuId, o => o.StuId, (stu, score) => new { name = stu.StuName, Item = score.First().ItemName, scores = score.First().Scores });
            foreach (var item in query1)
            {
            }
            //交叉连接
            query1 = from a in lstStudent
                     from b in lstScores                                          
                     select new
                     {
                         name = a.StuName,
                         Item = b.ItemName,
                         scores = b.Scores,
                     };
            var tmpQuery1=from a in lstStudent
                   join b in lstScores
                   on a.StuId equals b.StuId select new 
                   {
                        classid=a.ClassId,
                         name = a.StuName,
                         Item = b.ItemName,
                         scores = b.Scores,
                   };
            //group by
            var tmpGroupQuery = from a in tmpQuery1
                                group a by a.classid
                                    into sums
                                    select new
                                    {
                                        classid = sums.Key,
                                        score = sums.Sum(o => o.scores)
                                    };
            
            SortedList<int, Student> mySortlist = new SortedList<int, Student>
            {
                {12,new Student{ ClassId=1, StuId=1, StuName="stu1"}},
                {5,new Student{ ClassId=1, StuId=2, StuName="stu2"}},
                {4,new Student{ ClassId=1, StuId=3, StuName="stu3"}}
            };
            //mySortlist.Add(4, new Student { ClassId = 1, StuId = 3, StuName = "stu6" });

            int[] ints = new int[10];
            object obj = ints;
            object[] objarr = obj as object[];

            ArrayList strs = new ArrayList { 1, 2, 3, 4, 5 };
            //ArrayList实现的事IEnumerable而非IEnumerable<T>,要用LINQ查询则必须用Cast方法进行转换
            var str = from m in strs.Cast<int>() select m;
            string stra = "What's your Name";
            var capChars = from m in stra
                           let a=(int)m
                           where a==97
                           select m;
 
  

 

 

转载于:https://www.cnblogs.com/Finding2013/archive/2013/04/27/3047296.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值