美文网首页程序员
linq.js - LINQ for JavaScript

linq.js - LINQ for JavaScript

作者: Pipe | 来源:发表于2016-03-18 22:19 被阅读0次

学习背景

今天项目上面需要跟其他不熟悉的后台人员进行对接数据交互,结果,他们就直接返回了数据库查询到的数据。整个结构根本不是我前端页面想要的,而且嵌套的结构很深。正常情况下呢我需要多次for循环进去取数据并映射成自己需要的数据结构,然后跟 .net 同事聊到这个的时候,了解到有个Linq的方式,查了下结果还真有js版本的——Linq.js。

Linq.js

LINQ,语言集成查询(Language Integrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。
而Linq.js就是基于上面的机制,通过javascript来实现的。

使用方式

正常引入linq.js或者引入jquery.linq.js以jQuery插件的形式使用。

方法

90 Methods
Aggregate, All, Alternate, Any, Average, BufferWithCount, CascadeBreadthFirst, CascadeDepthFirst, Catch, Choice, Concat,Contains, Count, Cycle, DefaultIfEmpty, Distinct, Do, ElementAt, ElementAtOrDefault, Empty, Except, Finally, First, FirstOrDefault, Flatten, ForEach, Force, From, Generate, GetEnumerator, GroupBy, GroupJoin, IndexOf, Insert, Intersect, Join, Last, LastIndexOf,LastOrDefault, Let, Matches, Max, MaxBy, MemoizeAll, Min, MinBy, OfType, OrderBy, OrderByDescending, Pairwise, PartitionBy, Range, RangeDown, RangeTo, Repeat, RepeatWithFinalize, Return, Reverse, Scan, Select, SelectMany, SequenceEqual, Share, Shuffle,Single, SingleOrDefault, Skip, SkipWhile, Sum, Take, TakeExceptLast, TakeFromLast, TakeWhile, ThenBy, ThenByDescending, ToArray,ToDictionary, ToInfinity,ToJSON, ToLookup, ToNegativeInfinity, ToObject, ToString, Trace, Unfold, Union, Where, Write, WriteLine, Zip

例子

//重复输出5个3
Enumerable.Repeat(3).Take(5);//33333
//输出10开始5个值
Enumerable.Range(10,5);//10,11,12,13,14
//随机
Enumerable.Choice("a","b","c","d").Take(5)//随机输出a,b,c,d
//输出大于7个数
Enumerable.Range(1,10).Count("$>7")//3
//输出指定位置的值
Enumerable.Range(1,10).ElementAt(3)//4
var arr = [
    {
        name:'abcd',
        item:{
            list:[1,2,3,4]
        }
    },
    {
        name:'123',
        item:{
            list:[3,4,5,6,7,8]
        }
    },
    {
        name:'你好',
        item:{
            list:[5,6,7,8,9]
        }
    }
]
//选择name字段
Enumerable.From(arr).Select('$.name');//abcd,123,你好
//输出index为1的
Enumerable.From(arr).Select('$.name').Where('v,i=>i==1');//123
//输出所有的list
Enumerable.From(arr).SelectMany('$.item.list');//123434567856789
//输出去重的list
Enumerable.From(arr).SelectMany('$.item.list').Distinct();//123456789
//倒叙
Enumerable.From(arr).SelectMany('$.item.list').Distinct().OrderByDescending();//987654321
//分组
Enumerable.From(arr).SelectMany('$.item.list').Distinct().GroupBy('$%3').Select("$.Key() + ':' + $.ToString('-')");//1:1-4-7,2:2-5-8,0:3-6-9

主要就是当数据结构比较复杂的情况下处理数据,并快速的过滤数据,
这里就只是简单例举了一些方法,其他方法请自行查看linqPad

相关文章

  • linq.js - LINQ for JavaScript

    学习背景 今天项目上面需要跟其他不熟悉的后台人员进行对接数据交互,结果,他们就直接返回了数据库查询到的数据。整个结...

  • LINQ

    什么是linq? linq是语言集成查询。 linq主要包含三部分 linq to xml linq to obj...

  • Linq用法笔记

    一、什么是Linq? LINQ即Language Integrated Query(语言集成查询),LINQ是集成...

  • Lession12-LINQ

    LINQ简介 编写一个扩展方法 LINQ查询方法 LINQ查询的延迟加载 Linq标准查询操作符 LinqToXML

  • LINQ入门

    linq是语言集成查询。 linq to object :面向对象的查询。 linq to xml:针对xml查询...

  • (转).NET面试题系列[14] - LINQ to SQL与I

    LINQ to Object和LINQ to SQL有何区别? LINQ to SQL可以将查询表达式转换为SQL...

  • 2018-01-05 关于排序、《荒蛮故事》、列表点击自动排序

    第一组:姚成栋 关于排序 有两种排序的方式:前端js,后台LINQ js: JavaScript实现多维数组、对...

  • linq语句

    https://www.yiibai.com/linq/linq_filtering_operators.html...

  • EF Core 备忘

    模糊查询sql linq 内连接查询sql linq 左连接查询sql linq 左连接查询(连接内带条件)sql...

  • 四.SolidWorks 开发之Linq初探

    SolidWorks开发之Linq初探 一.何为Linq 语言集成查询(英语:Language Integrate...

网友评论

    本文标题:linq.js - LINQ for JavaScript

    本文链接:https://www.haomeiwen.com/subject/bfkhlttx.html