以乙個簡單的例子來說明:
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...