国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

linq讀書筆記2-查詢內存中的對象

2019-11-17 03:04:42
字體:
來源:轉載
供稿:網友
linq讀書筆記2-查詢內存中的對象

上次我們說到了linq對數組內容的檢索,自.net2.0以后,泛型成了很常見的一種應用技術,linq對泛型的檢索也提供了完善的支持

如對list類型的支持,范例如下:

class PRogram { static void Main(string[] args) { List<Books> samplebooks = new List<Books>() { new Books{Id=1,Name="book1"}, new Books{Id=2,Name="book2"}, new Books{Id=3,Name="book3"} }; var book = samplebooks.Where(p => p.Name.Contains("2")) .Select(p=>p.Name); foreach (var item in book) { Console.WriteLine(item); } Console.Read(); } } class Books { public int Id { get; set; } public string Name { get; set; } }

以上的例子只是我們很常見的一個場景,那么linq是不是支持我們.net中的所有類型呢,事實上linq支持所有實現了IEnumable<T>接口的集合,.net中的大部分集合都實現了該接口,但是并不是所有的集合都實現 了該接口事實上只有支持強類型胡集合才實現了該接口,如數組,list,字典等,都是強類型的,所以我們可以對這些對象應用linq to object技術。

對于非泛型的集合,如arrarlist,dataset等集合并沒有實現IEnumable<T>接口但是卻實現了IEnumabler接口,這樣的話是不是不能應泛型技術呢,當然這也還是有辦法去處理 的,我們后面會提到。

下面我們看一些linq的基本的操作:

where操作:

功能:條件過濾

操作符聲明:

public static IEnumerable<T> where<T>{

  this IEnumerable<T> source,

Func<T,bool> predicate

}

predicate的第一個元素表明了將參與判斷的元素,若該元素判斷通過將返回為true,否則返回false

通過對source的觀察我們也可以發現,where實質為一擴展方法,這個通過this關鍵字已經很明顯的暴露了出來。而predicate的實現實質則是通過委托來做處理,通過對參數predicate的觀察也可以很明顯的反應出來.

同時where還提供了一個重載的版本:

public static IEnumerable<T> where<T>{

  this IEnumerable<T> source,

Func<T,int,bool> predicate

}

predicate的第二個參數表示當前元素在源序列中的索引位置(以0為開始)

以下為該重載的一個范例代碼:

IEnumerable<Books> book=samplebooks.where(book,index)=>((book.Name.Contains("2") )&&( (index&1)==1));

以上代碼即為找出名稱中包含2且在序列中奇數位置的圖書


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 梧州市| 博野县| 宁河县| 吴川市| 庄浪县| 榆树市| 迭部县| 资溪县| 卢龙县| 肃宁县| 称多县| 赣州市| 仪陇县| 秀山| 河间市| 鹤山市| 运城市| 社旗县| 永定县| 于田县| 昌平区| 保定市| 永川市| 全南县| 黎平县| 江都市| 威信县| 南京市| 兴文县| 昆明市| 邢台县| 甘南县| 崇左市| 辽阳市| 山东省| 大同市| 崇州市| 涞水县| 潞城市| 赤峰市| 玉田县|