<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
        

      JS系列——Linq to js使用小結(jié)

      前言:前面幾篇介紹了下C#基礎(chǔ)技術(shù)中的幾個(gè):反射特性、泛型序列化、擴(kuò)展方法、Linq to Xml等,本來(lái)還有兩三個(gè)知識(shí)點(diǎn)沒(méi)有寫(xiě)完,比如委托、多線程、異步等,后面會(huì)陸續(xù)將它們補(bǔ)起來(lái),以便作為一套完整的系列。之所以有這篇是因?yàn)槟壳癇S項(xiàng)目中前端經(jīng)常需要對(duì)Json的數(shù)組對(duì)象進(jìn)行篩選、查找、判斷是否存在等操作。這時(shí)就想到了好用的Linq。博主幾年前用過(guò)Linq to js,那個(gè)時(shí)候還覺(jué)得那樣寫(xiě)很別扭,于是沒(méi)有重視?,F(xiàn)在隨著前段業(yè)務(wù)的越來(lái)越復(fù)雜,對(duì)前端的數(shù)據(jù)處理要求也越來(lái)越高,使用一種快捷的集合操作方式就變得越來(lái)越必要。今天正好趁系統(tǒng)升級(jí)Win 10,所以在此做個(gè)小結(jié),以后也可以留著當(dāng)文檔使用。O(∩_∩)O~

       

      1、什么是Linq to js :C# 3.0推出了.Net獨(dú)有的新特性:Linq。自從有了Linq,程序員再也不用擔(dān)心對(duì)集合的操作了。同理,Linq to js 當(dāng)然也就是對(duì)前端集合變量進(jìn)行操作的一種技術(shù)框架。

       

      2、怎么使用:因?yàn)槭乔岸丝蚣埽阅愣茫恍枰靡粋€(gè)js文件即可。這里還是附上官網(wǎng)地址:http://jslinq.codeplex.com/.這上面有文件和Demo,可以上去看看。使用方式主要有兩種:使用方法一、直接引用js文件;使用方法二、使用Nuget Package 安裝Linq to js。在PM安裝控制臺(tái)中輸入Install-Package jslinq。

      本篇以Linq to js的lamada表達(dá)式寫(xiě)法的方式來(lái)以此介紹常用方法。我們從官網(wǎng)上面下載下載的文件如下圖

      我們只需要引用linq.js文件即可。

      (1)條件查詢:Where

      var myList = [
                  { Name: "Jim", Age: 20 },
                  { Name: "Kate", Age: 21 },
                  { Name: "Lilei", Age: 18 },
                  { Name: "John", Age: 14 },
                  { Name: "LinTao", Age: 25 }
          ];
          var arrRes = Enumerable.From(myList).Where("x=>x.Name=='Jim'").ToArray();

      arrRes的結(jié)果為 [{"Name":"Jim","Age":20}]

      我們來(lái)看看這種寫(xiě)Lamada表達(dá)式的原型:

      var arrRes = Enumerable.From(myList).Where(function (i) { return i.Name=='Jim'; });

      參數(shù)i是對(duì)應(yīng)的集合里面的實(shí)體模型,返回類(lèi)型為bool類(lèi)型。有沒(méi)有和C#里面的擴(kuò)展函數(shù)Where的定義很像:public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);參數(shù)Func<TSource, bool> predicate為匿名委托,需要傳入實(shí)體模型TSource,然后返回值為bool類(lèi)型。其實(shí)感覺(jué)linq to js的使用就是參照c#里面的定義來(lái)的。

       

      (2)條件選擇:Select

      var myList = [
                  { Name: "Jim", Age: 20 },
                  { Name: "Kate", Age: 21 },
                  { Name: "Lilei", Age: 18 },
                  { Name: "John", Age: 14 },
                  { Name: "LinTao", Age: 25 }
          ];
          var arrRes = Enumerable.From(myList).Select("x=>x.Age*10").ToArray();

      arrRes得到結(jié)果 [200,210,180,140,250]

       

      (3)排序、去重:OrderBy、Distinct

      var myList = [
                  { Name: "Jim", Age: 20 },
                  { Name: "Kate", Age: 21 },
                  { Name: "Lilei", Age: 18 },
                  { Name: "John", Age: 14 },
                  { Name: "LinTao", Age: 25 }
          ];
          var arrRes = Enumerable.From(myList).OrderBy("x=>x.Age").ToArray();//降序OrderByDescending()

      得到的結(jié)果會(huì)按照Age排序。

      var myList = [
                  { Name: "Jim", Age: 20 },
                  { Name: "Kate", Age: 20 },
                  { Name: "Lilei", Age: 20 },
                  { Name: "John", Age: 14 },
                  { Name: "LinTao", Age: 25 }
          ];
          var arrRes = Enumerable.From(myList).Distinct("x=>x.Age").ToArray();

      得到的結(jié)果集合的數(shù)量為3個(gè):[ { Name: "Jim", Age: 20 }, { Name: "John", Age: 14 }, { Name: "LinTao", Age: 25 }]。

       

      (4)遍歷:ForEach

      var myList = [
                  { Name: "Jim", Age: 20 },
                  { Name: "Kate", Age: 20 },
                  { Name: "Lilei", Age: 20 },
                  { Name: "John", Age: 14 },
                  { Name: "LinTao", Age: 25 }
          ];
          Enumerable.From(myList).ForEach(function(value, index){
               document.write("值="+value+",索引="+index);   
       });

      很顯然兩個(gè)參數(shù):一個(gè)是值,另一個(gè)是當(dāng)前索引

       

      (5)取唯一對(duì)象:First、FirstOrDefault、Last、LastOrDefault、Single、SingleOrDefault

      var myList = [
                  { Name: "Jim", Age: 20 },
                  { Name: "Kate", Age: 20 },
                  { Name: "Lilei", Age: 20 },
                  { Name: "John", Age: 14 },
                  { Name: "LinTao", Age: 25 }
          ];
      
          var arrRes = Enumerable.From(myList).FirstOrDefault("x=>x.Age>18");

      其他幾個(gè)用法和這個(gè)類(lèi)似。這個(gè)沒(méi)什么好說(shuō)的。

       

      (6)Skip、Take

      Enumerable.Range(1,10).Skip(5)//結(jié)果[6,7,8,9,10]
      Enumerable.Range(1,10).Take(5)//結(jié)果[1,2,3,4,5]

       

      (7)取交集、取差集、合并

      var array1 = [1,412,5,3,5,412,7];
      var array2 = [20,12,5,5,7,310];
      Enumerable.From(array1).Except(array2)
      //結(jié)果3,412,1
      var array1 = [1,412,5,3,5,412,7];
      var array2 = [20,12,5,5,7,310];
      Enumerable.From(array1).Intersect(array2)
      //結(jié)果5,7
      var array1 = [1,412,5,3,5,412,7];
      var array2 = [20,12,5,5,7,310];
      Enumerable.From(array1).Union(array2)
      //結(jié)果是兩個(gè)結(jié)果集里面所有值,并自動(dòng)去重

       

        當(dāng)然還有其他一些不常用的方法。有興趣可以查看文檔。其實(shí)linq to js還有一種支持jquery的寫(xiě)法。如下:

      Enumerable.Range(1,10).Where("$%2==0")
      //等價(jià)于
      Enumerable.Range(1,10).Where("x=>x%2==0")

      但引用文件的時(shí)候需要引用jquery.linq.js這個(gè)文件。就是寫(xiě)法不同,效果完全一樣,選哪一種就是習(xí)慣問(wèn)題了。博主更加傾向lamada方式的寫(xiě)法,因?yàn)楹虲#用法可以保持一致。

       

        我把網(wǎng)上下載的文檔傳了一份到博客園上面:linq.js_ver2.2.0.2.rar

       

      posted @ 2015-07-30 13:44  懶得安分  閱讀(36943)  評(píng)論(19)    收藏  舉報(bào)
      主站蜘蛛池模板: 啊┅┅快┅┅用力啊岳网站| 国产av一区二区不卡| 九九热免费在线播放视频| 大香伊蕉在人线国产最新2005| 99精品国产一区二区三区2021| 亚洲精品专区在线观看| 中文字幕日韩精品有码| 蜜桃传媒av免费观看麻豆| 91久久天天躁狠狠躁夜夜| 国产日韩入口一区二区| 免费无码黄动漫在线观看| 国产成人精品午夜在线观看| 亚洲一区二区精品动漫| 资阳市| 一亚洲一区二区中文字幕| 天堂资源在线| 国产成人av一区二区三区不卡| 亚洲第一尤物视频在线观看导航| 日韩有码精品中文字幕| 人人做人人妻人人精| 精品中文人妻在线不卡| 久久人人妻人人爽人人爽| 无码欧亚熟妇人妻AV在线外遇| 成人国产精品一区二区不卡| 99久久国产综合精品女图图等你| 国产中文字幕在线一区| 日韩精品中文字幕国产一| 国产视频一区二区| 久久亚洲精品中文字幕无| 国产综合久久99久久| 玩弄放荡人妻少妇系列 | 国产精品大全中文字幕| 亚洲国产长腿丝袜av天堂| 国语精品一区二区三区| 国产国语一级毛片| 亚洲日本韩国欧美云霸高清| 国产成人无码午夜视频在线观看| 激情内射亚洲一区二区三区 | 国产不卡av一区二区| 日韩一区二区三区不卡片| 欧美日韩中文字幕久久伊人|