zoukankan      html  css  js  c++  java
  • 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;
    
    
    
     
  • 相关阅读:
    (48)zabbix报警媒介:自定义脚本Custom alertscripts
    Centos7下cratedb数据导入导出copy to copy from
    CentOS7下cratedb备份及恢复(快照)
    Centos7下mysql5.7.22主从配置
    Centos7安装配置MySQL5.7
    Centos7安装配置iptable
    Centos7 LNMP 一键安装
    Centos7防范SYN
    Centos7安装RabbitMQ解决Erlang依赖报错
    centos7安装配置zabbix4.0
  • 原文地址:https://www.cnblogs.com/Finding2013/p/3047296.html
Copyright © 2011-2022 走看看