/*********************Any/All/Contains/Concat/Union/Intersect/Except/take/skip/SqlMethods操作練習**********************************/
??????????? //判斷沒有成績的學生
??????????? var list = from s in ctx.T_Student
?????????????????????? where !s.T_Score.Any()
?????????????????????? select s;
??????????? //判斷有成績大于80的學生
??????????? var list1 = (from s in ctx.T_Student
???????????????????????? where s.T_Score.Any(t => t.score > 80)
???????????????????????? select s).Distinct();
??????????? //所有科目成績大于80的學生
??????????? var list2 = from s in ctx.T_Student
??????????????????????? where s.T_Score.All(t=>t.score>80)
??????????????????????? select s;
??????????? //查詢黃陽是否參加過考試
??????????? string[] names = { "黃陽"};
??????????? var list4 = from s in ctx.T_Score
??????????????????????? where names.Contains(s.T_Student.stuName)
??????????????????????? select s;
??????????? //查詢黃陽是否參加過考試
??????????? var list3 = from s in ctx.T_Score
??????????????????????? where (new string[] { "黃陽" }).Contains(s.T_Student.stuName)
??????????????????????? select s;
??????????? //參加過考試但是不是黃陽的同學
??????????? var list5 = from s in ctx.T_Score
??????????????????????? where !(new string[] { "黃陽" }).Contains(s.T_Student.stuName)
??????????????????????? select s;
??????????? //contains也可以包含一個對象,如查詢那些學生參加了課程編號為001的第一個同學,對于contains只能包含一個實體,不能保護實體集
??????????? var temp1 = (from s in ctx.T_Score
??????????????????????? where s.stuNumber == "001"
??????????????????????? select s).First();
??????????? var result = ctx.T_Student.Where(p=>p.T_Score.Contains(temp1));
??????????? //查找黃陽和黃波的所有成績
??????????? string[] names1 = {"黃陽","黃波"};
??????????? var result2 = ctx.T_Score.Where(f=>names1.Contains(f.T_Student.stuName));
??????????? //或者也可以這樣
??????????? var result3 = from s in ctx.T_Score
????????????????????????? where (new string[] { "黃陽", "黃波" }).Contains(s.T_Student.stuName)
????????????????????????? select s;
??????????? //對于concat,連接不同的集合,不會自動過濾相同項,而且它只能對于單列進行連接,對多列進行連接,會報語法錯誤,因為沒有相應的擴展方法
??????????? var result4 = (from s in ctx.T_Student
?????????????????????????? select s.stuName)
????????????????????????? .Concat(from k in ctx.T_Score
????????????????????????????????? select k.T_Cource.courceName );
??????????? //合并所有的學生
??????????? var result5 = ((from s in ctx.T_Student
??????????????????????????? select s.stuNumber)
??????????????????????? .Union
??????????????????????? (from k in ctx.T_Score
???????????????????????? select k.stuNumber)).Distinct();
??????????? //交集
??????????? var result6 = (from s in ctx.T_Student
?????????????????????????? select s.stuNumber).Intersect
????????????????????????? (from k in ctx.T_Score
?????????????????????????????? select k.stuNumber);
??????????? //差集
??????????? var result7 = (from s in ctx.T_Student
?????????????????????????? select s.stuNumber).Intersect
?????????????????????????????? (from k in ctx.T_Score
??????????????????????????????? select k.stuNumber);
??????????? //查詢前三個學生的信息
??????????? var result8 = (from s in ctx.T_Student
????????????????????????? select s).Take(3);
??????????? //查詢三個學生以外的所有學生信息
??????????? var result9 = (from s in ctx.T_Student
?????????????????????????????? select s).Skip(3);
??????????? //當學號為2091723時候,就停止獲取學生信息
??????????? var result10 = (from s in ctx.T_Student
??????????????????????????? select s).TakeWhile(k => k.stuNumber == "2091723");
??????????? //當學號為2091723時候,就停止跳過學生信息,并獲取后邊的所有學生信息
??????????? var result11 = (from s in ctx.T_Student
??????????????????????????? select s).SkipWhile(k => k.stuNumber == "2091723");
??????????? //可以用skip和take來對數據進行分頁,這非常方便
??????????? //查看姓名以黃開頭的學生信息,這時候程序需要引入using System.Data.Linq.SqlClient;命名空間
??????????? var result12 = from s in ctx.T_Student
?????????????????????????? where SqlMethods.Like(s.stuName,"黃%")
?????????????????????????? select s;
??????????? //查詢學號為2X917X2的學生
??????????? var result13 = from s in ctx.T_Student
?????????????????????????? where SqlMethods.Like(s.stuNumber, "2_917_2")
?????????????????????????? select s;
??????????? //比較時間的操作分別有:DateDiffDay、DateDiffHour、DateDiffMillisecond、DateDiffMinute、DateDiffMonth、DateDiffSecond、DateDiffYear ,也是sqlMethods方法,而數據庫中的表并沒有設計時間的字段,所以就不演示了
??????????? //SQL語句進行編輯重新查詢,需要引用命名空間using System.Data.Linq;
??????????? var fn = CompiledQuery.Compile(
??????????????? (DB_StudentDataContext ctx1,string stuName)=>
??????????????? from s in ctx1.T_Student
??????????????? where s.stuName==stuName
??????????????? select s
??????????????? );
??????????? var data1 = fn(ctx,"黃陽");
??????????? var data2 = fn(ctx,"黃波");
Linq無聊練習系列6--Any/All/Contains/Concat/Union/Intersect/Except/take/skip/SqlMethods操作練習
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
