LINQ的技術演進

2021-06-14 06:16:54 字數 1763 閱讀 1136

以乙個簡單的例子來說明:

var developersusingcsharp =

from d in developers

where d.language == "c#"

select d.name;

1)提供對ienumerable的extension method使得它可以將where, select應用到任意實現了ienumerable介面的物件上;

public static ienumerablewhere(

this ienumerablesource,

funcpredicate);

public static ienumerableselect(

this ienumerablesource,

funcselector);

由此得到演進的no.1形式:

var filtereddevelopers = developers.where(delegate (developer d) );

2)採用lambda expression實現anonymous delegate;

由此得到演進的no.2形式:

ienumerabledevelopersusingcsharp =

developers

.where(d => d.language == "c#")

.select(d => d.name);

3)c# compiler將linq query expression翻譯成lambda expression的形式。由此得到了對使用者最友好的方式。

在有些特殊情況下依然需要使用擴充套件方法來實現。

note-1: group and into clause(可以使用linqpad進行練習)

class developer

public string language

public int age

}void main()

, new developer ,

new developer ,

}; var developersgroupedbylanguage =

from d in developers

//group d by d.language;

group d by new ;

foreach (var group in developersgroupedbylanguage) ", group.key);

foreach (var item in group) -", item.name,item.age);

} }var developersgroupedbylanguage2 =

from d in developers

group d by d.language into developersgrouped

select new ;

foreach (var group in developersgroupedbylanguage2) contains developers",

group.language, group.developerscount);

}}

輸出結果如下:

language:

paolo-32

marco-37

language:

frank-48

language c# contains 2 developers

language vb.net contains 1 developers

技術的演進

對人們生活影響最大的是技術的進步,技術一直都是圍繞著生存和繁衍這兩大主題進行發展的,而技術的進步是因為人類集群的大規模協作。在整個過程中趨向於熵增加,也就是說技術的複雜度越來越高。石器遠古時代的人類不滿足於果實,需要營養含量更高的食物,在肉體力量上又無法與其他食肉動物相抗衡,只能使用石器敲開被其他食...

技術演進的方向

1.技術演進的方向?1.1 判斷方向的3大派別 潮流派 特點 熱衷新技術,緊跟技術潮流,迫切想將新技術應用起來 問題 新技術未成熟,可能遇到坑 掌握新技術後才知不適合,成本很高 保守派 特點 戒備新技術,穩定壓倒一切,一種技術打遍天下 問題 無法享受到新技術帶來的收益 跟風派 特點 跟緊競爭對手,對...

WCDMA 之 技術演進歷程

wcdm從r99 r10版本的演進歷程 3gpp版本 主要發展r4 wcdma上 下行速率達到384bps。r4版本的下行dpdch通道最多可以使用6個,所以室內靜止條件可達到2mbps.但由於太消耗資源,所以實際使用中都只使用了1個dpdch通道 r5引入hsdpa的概念,下行最大速率可達14.4...