• Linq to Sql ------------------------复习(二)


    类中的代码
      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 
      6 namespace LinqTest
      7 {
      8 class LinqDemo_2
      9 {
     10 static void Main(string[] args)
     11 {
     12 StudentDBDataContext db = new StudentDBDataContext("server=.;uid=sa;pwd=123456;database=studentdb");
     13 #region Any/All/Contains操作符
     14 //返回没有参加考试的学生
     15 //Console.WriteLine("No	"+"Name	"+"Age");
     16 //foreach (var item in (from stu in db.stuInfo select stu))
     17 //{
     18 // Console.WriteLine(item.stuNo + "	" + item.stuName + "	" + item.stuAge);
     19 //}
     20 //Console.WriteLine();
     21 
     22 //var sql1 = from stu in db.stuInfo where !stu.stuMarks.Any() select stu;
     23 //Console.WriteLine(sql1);
     24 //foreach (var item in sql1)
     25 //{
     26 // Console.WriteLine(item.stuNo+"	"+item.stuName+"	"+item.stuAge);
     27 //}
     28 
     29 
     30 //Any:用于判断集合中是否有元素满足某一条件
     31 //var sql = from s in db.stuInfo
     32 // where !s.stuMarks.Any()
     33 // select s;
     34 //foreach (var s in sql)
     35 //{
     36 // Console.WriteLine("学生姓名:{0}", s.stuName);
     37 //}
     38 
     39 //ALL:用于判断集合中所有元素是否都满足某一条件
     40 
     41 Console.WriteLine("
    ");
     42 var sql2 = from stu in db.stuInfo where stu.stuMarks.All(sm => sm.stuNo != stu.stuNo) select stu;
     43 Console.WriteLine(sql2);
     44 foreach (var item in sql2)
     45 {
     46 Console.WriteLine(item.stuNo + "	" + item.stuName + "	" + item.stuAge);
     47 }
     48 
     49 Console.WriteLine();
     50 Console.WriteLine("no"+"	LabExam"+"	WrittenExam");
     51 foreach (var item in (from sm in db.stuMarks select sm))
     52 {
     53 Console.WriteLine(item.stuNo+"	"+item.LabExam+"	"+item.writtenExam);
     54 }
     55 //var sql = from s in db.stuInfo
     56 // where s.stuMarks.All(sc => sc.stuNo != s.stuNo)
     57 // select s;
     58 //foreach (var s in sql)
     59 //{
     60 // Console.WriteLine("学生姓名:{0}", s.stuName);
     61 //}
     62 
     63 // Contains子查询形式
     64 Console.WriteLine("Contains");
     65 var sql3 = from stu in db.stuInfo where !(from sm in db.stuMarks select sm.stuNo).Contains(stu.stuNo) select stu;
     66 Console.WriteLine("No	" + "Name	" + "Age");
     67 foreach (var item in sql3)
     68 {
     69 Console.WriteLine(item.stuNo + "	" + item.stuName + "	" + item.stuAge);
     70 }
     71 #endregion
     72 
     73 #region SelectMany 连接查询
     74 //SelectMany类型:我们在写查询语句时,如果被翻译成SelectMany需要满足2个条件。1:查询语句中没有join和into,2:必须出现EntitySet。在我们表关系中有一对一关系,一对多关系,多对多关系等
     75 //第一种形式:常规形式
     76 var sql4 = from stu in db.stuInfo
     77 from sm in db.stuMarks
     78 where stu.stuNo==sm.stuNo
     79 select new
     80 {
     81 姓名 = stu.stuName,
     82 笔试 = sm.writtenExam,
     83 机试 = sm.LabExam
     84 };
     85 Console.WriteLine("姓名	"+"笔试	"+"机试");
     86 foreach (var item in sql4)
     87 {
     88 Console.WriteLine(item.姓名+"	"+item.笔试+"	"+item.机试);
     89 }
     90 
     91 
     92 //第二种形式:SelectMany查询形式
     93 Console.WriteLine();
     94 var sql5 = from stu in db.stuInfo
     95 from sm in stu.stuMarks
     96 select new
     97 {
     98 姓名 = stu.stuName,
     99 笔试 = sm.writtenExam,
    100 机试 = sm.LabExam
    101 };
    102 Console.WriteLine("姓名	" + "笔试	" + "机试");
    103 foreach (var item in sql5)
    104 {
    105 Console.WriteLine(item.姓名 + "	" + item.笔试 + "	" + item.机试);
    106 }
    107 //var sql = from s in db.stuInfo
    108 // from sc in s.stuMarks
    109 // select new
    110 // {
    111 // 姓名 = s.stuName,
    112 // 笔试 = sc.writtenExam,
    113 // 机试 = sc.LabExam
    114 // };
    115 //Console.WriteLine(sql);
    116 
    117 //第三种:简化形式
    118 Console.WriteLine();
    119 var sql6 = from sm in db.stuMarks
    120 select new
    121 {
    122 姓名 = sm.stuInfo.stuName,
    123 笔试 = sm.writtenExam,
    124 机试 = sm.LabExam,
    125 班级= sm.stuInfo.classic.className
    126 };
    127 Console.WriteLine("姓名	" + "笔试	" + "机试");
    128 foreach (var item in sql6)
    129 {
    130 Console.WriteLine(item.姓名 + "	" + item.笔试 + "	" + item.机试+"	"+item.班级);
    131 }
    132 //var sql = from s in db.stuInfo
    133 // where s.classic.className == "T102"
    134 // select s;
    135 //Console.WriteLine(sql);
    136 //foreach (var s in sql)
    137 //{
    138 // Console.WriteLine("学生姓名:{0},所在班级:{1}", s.stuName, s.classic.className);
    139 //}
    140 
    141 //第四种:多对多的查询形式
    142 //var sql = from s in db.stuInfo
    143 // from sc in s.stuMarks
    144 // select new
    145 // {
    146 // s.stuName,
    147 // s.classic.className,
    148 // sc.writtenExam,
    149 // sc.LabExam
    150 // };
    151 //Console.WriteLine(sql);
    152 //foreach (var s in sql)
    153 //{
    154 // Console.WriteLine("学生姓名:{0},所在班级:{1},笔试:{2},机试:{3}", s.stuName, s.className, s.writtenExam, s.LabExam);
    155 //}
    156 
    157 Console.WriteLine("SelectMany");
    158 var sql7 = db.stuInfo.SelectMany(s => s.stuMarks);
    159 Console.WriteLine(sql7);
    160 foreach (var item in sql7)
    161 {
    162 Console.WriteLine(item.stuNo+"	"+item.LabExam+"	"+item.writtenExam+"	");
    163 }
    164 #endregion
    165 Console.WriteLine("aaaaaa");
    166 //var sql8 = from stu in db.stuInfo
    167 // join c in db.classic
    168 // on stu.classID equals c.classID
    169 // into s
    170 // from ss in s.DefaultIfEmpty()
    171 // select new
    172 // {
    173 // stu.stuNo,
    174 // stu.stuName,
    175 // stu.classID,
    176 // count = s.Count(),
    177 // ss.className
    178 // };
    179 //var sql8 = from c in db.classic
    180 // join s in db.stuInfo
    181 // on c.classID equals s.classID
    182 // into cs
    183 // from stu in cs.DefaultIfEmpty()
    184 // select new
    185 // {
    186 
    187 // stu.stuNo,
    188 // stu.stuName,
    189 // c.classID,
    190 // c.className
    191 // };
    192 
    193 //foreach (var item in sql8)
    194 //{
    195 // Console.WriteLine(item.stuNo + "	" + item.stuName + "	" + item.classID + "	" + item.className);
    196 //}
    197 #region GroupJoin连接查询
    198 //像上面所说的,没有join和into,被翻译成SelectMany,同时有join和into时,那么就被翻译为GroupJoin,
    199 //如果在连接查询中,需要使用聚合函数,可以采用GroupJoin进行分组连接查询
    200 //只有join,没有into形式,类似于inner..join..on
    201 //var sql = from c in db.classic
    202 // join s in db.stuInfo
    203 // on c.classID equals s.classID //注意采用equals替换==
    204 // select new
    205 // {
    206 // c.className,
    207 // s.stuName
    208 // };
    209 //Console.WriteLine(sql);
    210 
    211 //左外部联接(Left Outer Join):
    212 //var sql = from s in db.stuInfo
    213 // join sc in db.stuMarks
    214 // on s.stuNo equals sc.stuNo
    215 // into ss //many端重新命名
    216 // from o in ss.DefaultIfEmpty() //左连接,DefaultIfEmpty再次遍历右边,没有的学生默认为null
    217 // select new
    218 // {
    219 // s.stuName,
    220 // writtenExam = o.writtenExam==null?0:o.writtenExam,
    221 // labExam = o.LabExam==null?0:o.LabExam
    222 
    223 // };
    224 //Console.WriteLine(sql);
    225 //foreach (var s in sql)
    226 //{
    227 // Console.WriteLine("姓名:{0},笔试:{1},机试:{2}",s.stuName,s.writtenExam,s.labExam);
    228 //}
    229 
    230 //三向连接
    231 //var sql = from c in db.classic
    232 // join s in db.stuInfo
    233 // on c.classID equals s.classID
    234 // join sc in db.stuMarks
    235 // on s.stuNo equals sc.stuNo
    236 // select new
    237 // {
    238 // c.className,
    239 // s.stuName,
    240 // sc.writtenExam,
    241 // sc.LabExam
    242 // };
    243 //Console.WriteLine(sql);
    244 //foreach (var s in sql)
    245 //{
    246 // Console.WriteLine("学生姓名:{0},所在班级:{1},笔试:{2},机试:{3}", s.className, s.stuName, s.writtenExam, s.LabExam);
    247 //}
    248 
    249 //双向联接(Two way join):
    250 //var sql = from c in db.classic
    251 // join s in db.stuInfo
    252 // on c.classID equals s.classID
    253 // into stu
    254 // select new
    255 // {
    256 // className = c.className,
    257 // count = stu.Count()
    258 // };
    259 //Console.WriteLine(sql);
    260 //foreach (var s in sql)
    261 //{
    262 // Console.WriteLine("班级:{0},人数:{1}", s.className, s.count);
    263 //}
    264 #endregion
    265 }
    266 }
    267 }
    View Code

    数据库中的代码和Linq to Sql ------------------------复习(一)是相同的

  • 相关阅读:
    [Docker]如何实现使用scp从任意路径中向Docker镜像中复制文件
    puma web server如何监听所有IP地址
    Consider increasing the configuration parameter "max_wal_size
    ABFramework中使用select查询表时,想要排除某些字段不显示的方法
    FireDAC内存表过虑的错误
    有了ABMeeting,远程控制再也不用什么向X葵了
    ABFramework中设置关联表下拉选择的方法
    太牛逼了
    python3 利用scapy抓取网卡数据包并保存pcap
    json数组根据某属性去重
  • 原文地址:https://www.cnblogs.com/liujie1111/p/3617349.html
Copyright © 2020-2023  润新知