LINQ TO SQL概述
LINQ TO SQL是LINQ技术在数据库方面的应用。数据库技术从OLEDB,ODBC到ADO,在到ADO.NET到现在的LINQ TO SQL,让程序员操作数据库越来越简单。
LINQ TO JAVASCRIPT概述
LINQ TO JAVASCRIPT 宗旨就是代码风格像 LINQ TO SQL 一样操作数据。
LINQ TO JAVASCRIPT 数据格式为 JSON (JavaScript Object Notatio)
那我们看看 linq to javascript 是怎么做的
首先,我们先准备静态数据做为演示用。
var Samples = {};
Samples.People = [
{ ID: 1, FirstName: "Chris", LastName: "Pearson", BookIDs: [8008, 1002, 1003] },
{ ID: 2, FirstName: "Chris", LastName: "Johnson", BookIDs: [2001, 2002, 2003] },
{ ID: 3, FirstName: "Josh", LastName: "Sutherland", BookIDs: [3001, 3002, 3003] },
{ ID: 4, FirstName: "John", LastName: "Ronald", BookIDs: [4001, 4002, 4003] },
{ ID: 5, FirstName: "Steve", LastName: "Pinkerton", BookIDs: [1001, 1002, 1003] },
{ ID: 6, FirstName: "Katie", LastName: "Zimmerman", BookIDs: [2001, 2002, 2003] },
{ ID: 7, FirstName: "Dirk", LastName: "Anderson", BookIDs: [3001, 3002, 3003] },
{ ID: 8, FirstName: "Chris", LastName: "Stevenson", BookIDs: [4001, 4002, 4003] },
{ ID: 9, FirstName: "Bernard", LastName: "Sutherland", BookIDs: [1001, 2002, 3003] },
{ ID: 10, FirstName: "Kate", LastName: "Pinkerton", BookIDs: [4001, 3002, 2003] }
];
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
核心代码我们加到了YUI 里
YUI.add('LINQ', function(Y) {
// core code
},'3.1.1');
- 1.
- 2.
- 3.
用Where关键字查询
var db = Y.LINQ(Samples.People)
.Where(function(item){return item.FirstName == 'Chris';})
- 1.
- 2.
会返回三条数据
{items => [{ID => 1, FirstName => Chris, LastName => Pearson, BookIDs => [8008, 1002, 1003]},
{ID => 2, FirstName => Chris, LastName => Johnson, BookIDs => [2001, 2002, 2003]},
{ID => 8, FirstName => Chris, LastName => Stevenson, BookIDs => [4001, 4002, 4003]}]}
Select
var db = Y.LINQ(Samples.People)
.Where(function(item){return item.FirstName == 'Chris';})
.Select(function(item){return item.FirstName;})
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
返回结果
语句中指定了返回 FirstName 所以返回 {items => [Chris, Chris, Chris]}
Intersect
第一个结果集
var test2 = Y.LINQ(Samples.People)
.Where(function(item){return item.FirstName != 'Chris';});
- 1.
- 2.
返回是
{items => [{ID => 3, FirstName => Josh, LastName => Sutherland, BookIDs => [3001, 3002, 3003]},
{ID => 4, FirstName => John, LastName => Ronald, BookIDs => [4001, 4002, 4003]},
{ID => 5, FirstName => Steve, LastName => Pinkerton, BookIDs => [1001, 1002, 1003]},
{ID => 6, FirstName => Katie, LastName => Zimmerman, BookIDs => [2001, 2002, 2003]},
{ID => 7, FirstName => Dirk, LastName => Anderson, BookIDs => [3001, 3002, 3003]},
{ID => 9, FirstName => Bernard, LastName => Sutherland, BookIDs => [1001, 2002, 3003]},
{ID => 10, FirstName => Kate, LastName => Pinkerton, BookIDs => [4001, 3002, 2003]}]}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
第2个结果集
var test = Y.LINQ(Samples.People)
.Where(function(item){return item.ID < 5;})
.Intersect(test2)
- 1.
- 2.
- 3.
先取出所有ID小于5的数据,然后再返回和test2数据集相交的部分
返回结果
{items => [{ID => 3, FirstName => Josh, LastName => Sutherland, BookIDs => [3001, 3002, 3003]},
{ID => 4, FirstName => John, LastName => Ronald, BookIDs => [4001, 4002, 4003]}]}
- 1.
- 2.
只返回3,4两条数据了 ,因为名字不等于Chris 并且 ID < 5的 就只有2条数据 : )
OrderBy / OrderByDescending
var test = Y.LINQ(Samples.People)
.Where(function(item){return item.ID < 5;})
.OrderByDescending(function(item){return item.ID})
- 1.
- 2.
- 3.
- 4.
按指定表达式对集合倒序排序,这里我们用ID排序
返回结果:
{items => [{ID => 4, FirstName => John, LastName => Ronald, BookIDs => [4001, 4002, 4003]},
{ID => 3, FirstName => Josh, LastName => Sutherland, BookIDs => [3001, 3002, 3003]},
{ID => 2, FirstName => Chris, LastName => Johnson, BookIDs => [2001, 2002, 2003]},
{ID => 1, FirstName => Chris, LastName => Pearson, BookIDs => [8008, 1002, 1003]}]}
- 1.
- 2.
- 3.
- 4.
var test = Y.LINQ(Samples.People)
.Where(function(item){return item.ID < 5;})
.OrderBy(function(item){return item.ID})
- 1.
- 2.
- 3.
按指定表达式对集合正序排序,这里我们用ID排序
返回结果:
{items => [{ID => 1, FirstName => Chris, LastName => Pearson, BookIDs => [8008, 1002, 1003]},
{ID => 2, FirstName => Chris, LastName => Johnson, BookIDs => [2001, 2002, 2003]},
{ID => 3, FirstName => Josh, LastName => Sutherland, BookIDs => [3001, 3002, 3003]},
{ID => 4, FirstName => John, LastName => Ronald, BookIDs => [4001, 4002, 4003]}]}
- 1.
- 2.
- 3.
- 4.
Skip
跳过几条数据
var test = Y.LINQ(Samples.People)
.Where(function(item){return item.ID < 5;})
.OrderBy(function(item){return item.ID})
.Skip(0);
- 1.
- 2.
- 3.
- 4.
返回结果:
{items => [{ID => 2, FirstName => Chris, LastName => Johnson, BookIDs => [2001, 2002, 2003]},
{ID => 3, FirstName => Josh, LastName => Sutherland, BookIDs => [3001, 3002, 3003]},
{ID => 4, FirstName => John, LastName => Ronald, BookIDs => [4001, 4002, 4003]}]}
- 1.
- 2.
- 3.
从结果看,我们的数据集跳过了第一条数据
Delete
删除
var test = Y.LINQ(Samples.People)
.Where(function(item){return item.ID < 5;})
.OrderBy(function(item){return item.ID})
.Skip(0)
.Delete(function(item){return item.ID == 2;})
- 1.
- 2.
- 3.
- 4.
- 5.
返回结果:
{items => [{ID => 3, FirstName => Josh, LastName => Sutherland, BookIDs => [3001, 3002, 3003]},
{ID => 4, FirstName => John, LastName => Ronald, BookIDs => [4001, 4002, 4003]}]}
- 1.
- 2.
Min / Max / Average / Sum
var test = Y.LINQ(Samples.People)
.Where(function(item){return item.ID < 5;})
.OrderBy(function(item){return item.ID})
.Skip(0)
.Delete(function(item){return item.ID == 2;})
.Min(function(item){return item.ID;})
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
沿用上面结果集,Min取最小值
最后返回结果 3 ,其他关键字用法相同 : )
First / Last
var test = Y.LINQ(Samples.People)
.Where(function(item){return item.ID < 5;})
.First();
- 1.
- 2.
- 3.
返回首行数据
{ID => 1, FirstName => Chris, LastName => Pearson, BookIDs => [8008, 1002, 1003]}
- 1.
var test = Y.LINQ(Samples.People)
.Where(function(item){return item.ID < 5;})
.Last();
- 1.
- 2.
- 3.
返回末行数据
{ID => 4, FirstName => John, LastName => Ronald, BookIDs => [4001, 4002, 4003]}
- 1.
Take
取前几条数据
var test = Y.LINQ(Samples.People)
.Where(function(item){return item.ID < 5;})
.Take(2);
- 1.
- 2.
- 3.
取了前2条数据,返回结果
{items => [{ID => 1, FirstName => Chris, LastName => Pearson, BookIDs => [8008, 1002, 1003]},
{ID => 2, FirstName => Chris, LastName => Johnson, BookIDs => [2001, 2002, 2003]}]}
- 1.
- 2.
Count
返回结果的总个数
var test = Y.LINQ(Samples.People)
.Where(function(item){return item.ID < 5;})
.Count();
- 1.
- 2.
- 3.
返回结果 4 ,正确的 ID小于5的 数据刚好是4条 : )
SelectMany / Any / All / ElementAt / Distinct ...... 等等 就不一一介绍了
原文标题:LINQ TO JAVASCRIPT
链接:http://www.cnblogs.com/windows7/archive/2010/06/03/1750431.html
【编辑推荐】