Linq(03)基础之Orderby group-by
說明:本內容來自微軟的MSDN,好記性不如爛筆頭,加深印象。
我的心得:@開頭
?
Let子句
1)????? 在查詢表達式中,存儲子表達式的結果有時很有用,這樣可以在隨后的子句中使用。
2)?????? 該關鍵字可以創建一個新的范圍變量,并且用您提供的表達式的結果初始化該變量。
3)?????? 一旦用值初始化了該范圍變量,它就不能用于存儲其他值。
@相當于SQL的子查詢
@計算一次,提高性能。
| ??? public class let子句 ??? { ??????? // 找出含m的英文名字 ??????? public static void TestLet() ??????? { ??????????? string[] strings = ??????????? { ???????????? "A penny saved is a penny earned.", ??????????? "The early bird catches the worm.", ??????????? "The pen is mightier than the sword." ??????????? }; ??????????? ??????????? var earlyBirdQuery = ?????????????? from sentence in strings ?????????????? let words = sentence.Split(' ') ?????????????? from word in words ???? ????????? let w = word.ToLower() ?????????????? where w[0] == 'a' || w[0] == 'e' ?????????????? select word;
? ??????????? foreach (var item in earlyBirdQuery) ??????????? { ??????????????? Console.WriteLine("\"{0}\" starts with a vowel", item); ?????????? ?} ??????? } }
? |
?
where 子句
1)? 它將一個布爾條件(“謂詞”)應用于每個源元素(由范圍變量引用),并返回滿足指定條件的元素。
2)? 一個查詢表達式可以包含多個 where 子句,一個子句可以包含多個謂詞子表達式。
3)?? 運算符:> < 等于(==) 或(||) 且(&&)
4)?? where 子句是一種篩選機制
5)?? 不能放在第一個或最后一個子句,它幾乎可以放在查詢表達式中的任何位置。
@與SQL的where用途相同,算術運算符和邏輯運算符使用.NET中的。
orderby 子句
1) orderby 子句可使返回的序列或子序列(組)按升序或降序排序。
2) 可以指定多個鍵,以便執行一個或多個次要排序操作。
3) 默認排序順序為升序(ascending)。
4) 可以指定自定義比較器。但是,只能通過基于方法的語法使用它。
5) 編譯時,orderby 子句被轉換為對 OrderBy 方法的調用。orderby 子句中的多個鍵轉換為 ThenBy 方法調用。
@與SQL的order by用途相同,也有升序和降序。
group 子句
1)????? group 子句返回一個 IGrouping<(Of <(TKey, TElement>)>) 對象序列,這些對象包含零個或更多個與該組的鍵值匹配的項。
2)????? 對每個組執行附加查詢操作,則可以使用 into 上下文關鍵字指定一個臨時標識符。
3)????? 使用 into 時,必須繼續編寫該查詢,并最終用一個 select 語句或另一個 group 子句結束該查詢。通常和group by 結合使用。
| // Group students by the first letter of their last name // Query variable is an IEnumerable<IGrouping<char, Student>> var studentQuery2 = ??? from student in students ??? group student by student.Last[0] into g ??? orderby g.Key ??? select g;
? |
?
4)????? 組鍵可以是任何類型,如字符串、內置數值類型、用戶定義的命名類型或匿名類型。
5)????? 布爾值作為鍵將結果劃分成兩個組。請注意,該值是由 group 子句中的子表達式產生的。
按字符串進行分組
char。可以很容易地改為指定字符串鍵
按布爾進行分組
使用布爾值作為鍵將結果劃分成兩個組。請注意,該值是由 group 子句中的子表達式產生的。
按數值范圍進行分組
按復合鍵進行分組
當您想要按照多個鍵對元素進行分組時,可使用復合鍵。通過使用匿名類型或命名類型來存儲鍵元素,可以創建復合鍵。當您想要按照多個鍵對元素進行分組時,可使用復合鍵。通過使用匿名類型或命名類型來存儲鍵元素,可以創建復合鍵。
| ??????? public static void TestGroupby() ??????? { ??????????? IEnumerable<IGrouping<string,Student>> g = ???????????? Student.students ??????????????? .GroupBy(x => x.Last);
? ??????????? foreach (IGrouping<string,Student> item in g) ??????????? { ??????????????? Console.WriteLine(string.Format("group key {0}",item.Key));
? ??????????????? foreach (Student item2 in item) ??????????????? { ??????????????????? Console.WriteLine(string.Format("name {0}", item2.First)); ??????????????? } ??????????? } ??????? } |
join 子句
1)? 使用 join 子句可以將來自不同源序列并且在對象模型中沒有直接關系的元素相關聯。
唯一的要求是每個源中的元素需要共享某個可以進行比較以判斷是否相等的值。轉載于:https://www.cnblogs.com/htht66/archive/2012/01/29/2330897.html
總結
以上是生活随笔為你收集整理的Linq(03)基础之Orderby group-by的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UNITY3d在移动设备上的一些优化实战
- 下一篇: VMware workstation