青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Javen-Studio 咖啡小屋

http://javenstudio.org - C++ Java 分布式 搜索引擎
Naven's Research Laboratory - Thinking of Life, Imagination of Future

  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  24 隨筆 :: 57 文章 :: 170 評(píng)論 :: 4 Trackbacks

4           其他標(biāo)準(zhǔn)查詢操作符(More Standard Query Operators

在最上面描述的基本的查詢技巧(query facilities)中,許多操作符(a number of operators)提供有用的方式(useful ways)來(lái)操作序列(manipulating sequences)和組裝查詢(composing queries),通過(guò)使用便利(convenient)的標(biāo)準(zhǔn)查詢操作符(standard query operators)的框架(framework)讓用戶在結(jié)果(over the result)之上有很高的控制程度(high degree of control)。

 

4.1         排序和分組操作(Sorting and Grouping

通常(In general),查詢表達(dá)式(query expression)的賦值(evaluation)導(dǎo)致(產(chǎn)生)(results in)的一個(gè)序列的值(sequence of values),并且以某種順序(in some order)產(chǎn)生(produced),這是基本的信息源(the underlying information sources)的固有性質(zhì)(intrinsic)。為了讓開(kāi)發(fā)者清楚地控制(explicit control)數(shù)據(jù)序列產(chǎn)生的順序,所以定義了標(biāo)準(zhǔn)查詢操作符(standard query operators)來(lái)控制順序(controlling the order)。其中最基本的操作符就是 OrderBy

 

OrderBy OrderByDescending 操作符可以用來(lái)應(yīng)用于任何信息源(any information source),允許用戶提供一個(gè)制造出(produces)用來(lái)給結(jié)果排序(used to sort the results)的值的一個(gè)關(guān)鍵詞分解函數(shù)(key extraction function)。OrderBy OrderByDescending 操作符也可以接收(accept)可選的比較函數(shù)(optional comparison function),這個(gè)函數(shù)可以用來(lái)給關(guān)鍵詞(keys)的排序強(qiáng)加上(impose)一個(gè)次序的排序(partial order)。讓我們看看下面這段基礎(chǔ)的例子:

 

string[] names = "Burke""Connor""Frank""Everett"
                   
"Albert""George""Harris""David" }
;

// unity sort
var s1 = names.OrderBy(s => s); 
var s2 
= names.OrderByDescending(s => s);

// sort by length
var s3 = names.OrderBy(s => s.Length); 
var s4 
= names.OrderByDescending(s => s.Length);

 

前面兩個(gè)查詢表達(dá)式產(chǎn)生新的序列是基于字符串比較(based on string comparison)的對(duì)數(shù)據(jù)源成員的排序方式(based on sorting the members of the source)產(chǎn)生的。下面兩個(gè)查詢產(chǎn)生的序列是基于每個(gè)字符串長(zhǎng)度(based on the length of each string)的對(duì)數(shù)據(jù)源成員的排序(sorting the members of the source)方式產(chǎn)生的。

 

為了允許多次排序的標(biāo)準(zhǔn)(multiple sort criteria),OrderBy OrderByDescending 操作符都返回 SortedSequence<T> 接口 而不是通常的 IEnumerable<T>.接口。兩個(gè)只定義在 SortedSequence<T> 接口之上的操作符,被稱作 ThenBy ThenByDescending,它們用來(lái)應(yīng)用一個(gè)附加的(并且次序的)的排序標(biāo)準(zhǔn)(additional (subordinate) sort criterion)。ThenBy/ThenByDescending 操作符它們自己返回 SortedSequence<T> 接口,而且允許應(yīng)用許多(any number of)次 ThenBy/ThenByDescending 操作符:

 

string[] names = "Burke""Connor""Frank""Everett"
                   
"Albert""George""Harris""David" }
;

var s1 
= names.OrderBy(s => s.Length).ThenBy(s => s);

 

在這個(gè)例子中,變量 s1 所引用(referenced)的查詢的賦值(Evaluating the query)將產(chǎn)生出(yield)下面的值的序列(sequence of values):

 

"Burke""David""Frank"
"Albert""Connor""George""Harris"
"Everett"

 

除了(In addition toOrderBy 種類的操作符(OrderBy family of operators),標(biāo)準(zhǔn)查詢操作符(standard query operators)還包括一個(gè) Reverse 操作符。Reverse 操作符簡(jiǎn)單地在一個(gè)序列上進(jìn)行枚舉(enumerates)操作,產(chǎn)生(yields)一個(gè)以相反順序排序(in reverse order)的包含相同成員的一組值。與 OrderBy 不同,Reverse 在決定排序(determining the order)的時(shí)候不考慮那些值自己的真實(shí)內(nèi)容(actual values themselves),而是單獨(dú)地依靠(relies solely)基本數(shù)據(jù)源(the underlying source)所產(chǎn)成的值的順序。

 

OrderBy 操作符影響(imposes)一組值的序列(a sequence of values)的排列順序(a sort order)。標(biāo)準(zhǔn)查詢操作符還包括 GroupBy 操作符,它影響一組值的序列的分割(partitioning,基于一個(gè)關(guān)鍵詞分解函數(shù)(a key extraction function)。GroupBy 操作符返回一個(gè)分組的值(Grouping values)的序列,一組會(huì)遇到的每一個(gè)單獨(dú)的關(guān)鍵詞的值的序列(one for each distinct key value that was encountered)。每一分組(each grouping)既包含了關(guān)鍵詞(key)又(as well as)包含了映射到(mapped to)這個(gè) key 的那一組值(the group of values)。分組(Grouping)的公開(kāi)標(biāo)識(shí)(public contract)看起來(lái)像如下的代碼:

 

public sealed class Grouping<K, T> {
  
public Grouping(K key, IEnumerable<T> group);
  
public Grouping();
  
public K Key getset; }
  
public IEnumerable<T> Group setget; }
}

 

最簡(jiǎn)單的使用 GroupBy 程序看起來(lái)如下所示:

 

string[] names = "Albert""Burke""Connor""David",
                   
"Everett""Frank""George""Harris"}
;

// group by length
var grouping = names.GroupBy(s => s.Length);

foreach (Grouping<intstring> group in grouping) {
    Console.WriteLine(
"Strings of length {0}", group.Key);

    
foreach (string value in group.Group)
        Console.WriteLine(
"  {0}", value);
}
    

 

當(dāng)運(yùn)行后,此段程序?qū)⒋蛴〕鋈缦碌慕Y(jié)果:

 

Strings of length 6
  Albert
  Connor
  George
  Harris
Strings of length 
5
  Burke
  David
  Frank
Strings of length 
7
  Everett

 

Select GroupBy 關(guān)鍵詞允許你提供一個(gè)映射函數(shù)(projection function)來(lái)移動(dòng)分組的成員(populate members of the groups):

 

string[] names = "Albert""Burke""Connor""David",
                   
"Everett""Frank""George""Harris"}
;

// group by length
var grouping = names.GroupBy(s => s.Length, 
                             s 
=> s[0]);
foreach (Grouping<intchar> group in grouping) {
    Console.WriteLine(
"Strings of length {0}", group.Key);

    
foreach (char value in group.Group)
        Console.WriteLine(
"  {0}", value);
}
  

 

這個(gè)變化(variation)將打印出如下結(jié)果:

 

Strings of length 6
  A
  C
  G
  H
Strings of length 
5
  B
  D
  F
Strings of length 
7
  E

 

從這個(gè)例子中需要注意的是,投影類型(projected type)不需要跟數(shù)據(jù)源一模一樣。既然這樣(In this case),我們從一個(gè)字符串的序列(a sequence of strings)創(chuàng)建了一個(gè)從整型(integers)到字符(characters)的分組。

 

 

 

 

待續(xù), 錯(cuò)誤難免,請(qǐng)批評(píng)指正,譯者Naven 2005-10-24

posted on 2005-10-25 00:32 Javen-Studio 閱讀(1111) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美大片91| 亚洲美女视频网| 欧美成人精品激情在线观看 | 亚洲高清久久网| 久久久免费av| 美脚丝袜一区二区三区在线观看 | 欧美日韩在线视频首页| 欧美日韩极品在线观看一区| 欧美日韩国产首页| 国产精品美女诱惑| 国产女主播一区二区| 国内精品伊人久久久久av一坑| 国精产品99永久一区一区| 韩国欧美一区| 最新中文字幕亚洲| 亚洲欧美日韩天堂| 久久综合狠狠综合久久激情| 美女国内精品自产拍在线播放| 亚洲国产精品国自产拍av秋霞| 亚洲美女诱惑| 性伦欧美刺激片在线观看| 欧美黄色aaaa| 国产网站欧美日韩免费精品在线观看| 在线看视频不卡| 亚洲综合欧美| 亚洲大片精品永久免费| 亚洲免费一区二区| 免费一级欧美片在线观看| 国产精品女主播| 亚洲东热激情| 性欧美精品高清| 欧美激情按摩| 欧美一区成人| 国产精品v一区二区三区| 亚洲激情欧美激情| 久久影视精品| 亚洲欧美卡通另类91av| 欧美高清在线视频观看不卡| 国产亚洲aⅴaaaaaa毛片| 99国产精品久久久久老师 | 亚洲欧美日韩综合| 亚洲美女在线观看| 亚洲综合精品自拍| 欧美成人免费网站| 性欧美8khd高清极品| 国产精品入口福利| 久久久夜色精品亚洲| 亚洲免费观看在线观看| 亚洲天堂成人在线观看| 免费欧美网站| 欧美在线视频一区| 国产女主播一区二区三区| 亚洲综合色视频| 9色精品在线| 欧美日韩一级大片网址| 一本一本a久久| 日韩视频一区二区三区在线播放| 免费成人av在线看| 一区二区在线看| 久久人体大胆视频| 欧美一区二区在线| 国产午夜久久| 久久久一区二区三区| 小黄鸭精品密入口导航| 国产日韩欧美一区在线| 久久精品系列| 久久先锋影音av| 亚洲精品一区二区三区av| 欧美激情片在线观看| 欧美阿v一级看视频| 日韩亚洲一区二区| 夜夜狂射影院欧美极品| 国产精品美女xx| 久久国产精品久久久| 久久久久久9999| 亚洲人成网站777色婷婷| 亚洲精品久久久久久一区二区| 欧美精选午夜久久久乱码6080| 一二三区精品福利视频| 亚洲一区二区高清视频| 国内视频一区| 亚洲精品男同| 国产精品资源| 久久综合久久久| 欧美片第一页| 久久九九国产精品| 欧美a级一区二区| 亚洲一区尤物| 久久久综合精品| 在线亚洲欧美专区二区| 欧美在线一区二区三区| 久久精品视频在线| 亚洲美女毛片| 葵司免费一区二区三区四区五区| 亚洲国产欧美国产综合一区| 91久久香蕉国产日韩欧美9色| 欧美日韩免费在线视频| 久久久久成人精品免费播放动漫| 麻豆精品精品国产自在97香蕉| 一本一道久久综合狠狠老精东影业 | 国产精品伊人日日| 亚洲大胆在线| 国产欧美一区二区三区另类精品| 老**午夜毛片一区二区三区| 欧美人与禽猛交乱配视频| 久久精品一区二区三区中文字幕| 欧美韩日一区二区| 久久久精品性| 国产精品久久久久久久久久三级| 六月婷婷久久| 国产欧美日韩亚洲精品| 亚洲国产精选| 影音先锋成人资源站| 亚洲校园激情| 妖精视频成人观看www| 欧美一区二区三区啪啪| 亚洲性线免费观看视频成熟| 久久躁日日躁aaaaxxxx| 久久激情五月丁香伊人| 国产精品sss| 亚洲黄页视频免费观看| 伊人色综合久久天天| 午夜精品网站| 亚洲欧美日韩一区二区| 欧美四级在线观看| 亚洲欧洲午夜| 亚洲美女精品一区| 麻豆精品在线观看| 久久亚洲综合网| 国内精品视频久久| 欧美一区二视频在线免费观看| 欧美一区二区三区在线看| 国产精品hd| 中文久久乱码一区二区| 亚洲一区二区三区在线观看视频| 欧美日韩高清在线观看| 亚洲精品中文字幕女同| 亚洲乱码视频| 欧美日韩99| 一本色道久久88精品综合| 一区二区三区免费在线观看| 欧美日韩国产小视频| 亚洲精品乱码久久久久久黑人| 亚洲国产精品嫩草影院| 免费看av成人| 亚洲另类一区二区| 亚洲图片欧美日产| 欧美体内谢she精2性欧美| 中文在线一区| 欧美影院午夜播放| 国产欧美成人| 久久深夜福利| 亚洲精品美女久久7777777| 在线视频精品一区| 国产精品久久久免费| 欧美尤物一区| 欧美不卡视频一区发布| 麻豆精品在线视频| 老鸭窝91久久精品色噜噜导演| 噜噜噜在线观看免费视频日韩 | 亚洲人成网站色ww在线| 欧美日韩在线亚洲一区蜜芽| 亚洲免费一在线| 玖玖国产精品视频| 亚洲精品一区二区在线观看| 欧美丝袜第一区| 久久久久久久网| 91久久久一线二线三线品牌| 亚洲欧美日本另类| 红桃视频国产一区| 欧美日韩免费| 久久精品系列| 99riav国产精品| 久久免费高清视频| 一二三区精品| 亚洲承认在线| 国产精品一香蕉国产线看观看| 欧美成人国产一区二区| 亚洲主播在线观看| 亚洲国产成人av| 久久久久久噜噜噜久久久精品 | 欧美大片在线观看| 午夜精品亚洲| 亚洲欧洲三级| 国产午夜亚洲精品理论片色戒| 欧美丰满高潮xxxx喷水动漫| 亚洲综合色激情五月| 亚洲日本成人| 你懂的国产精品| 久久精品国产免费| 一区二区三区四区国产| 亚洲成色最大综合在线| 国产一区二区丝袜高跟鞋图片| 欧美三日本三级少妇三2023| 乱人伦精品视频在线观看| 香蕉久久精品日日躁夜夜躁| 99成人在线| 亚洲精品国产日韩| 欧美韩日精品| 久久夜色撩人精品|