几个经典的sql语句的LINQ to Entities实现方式

2013-09-03 02:10 ·Ab叔 1155 15 <- 点击左侧的数字“攒”一个吧

传统的程序员可能对Sql语句掌握的很熟悉,但初次接触LINQ的时候可能会摸不着头脑,在这里用LINQ实现之前开发程序时经常用到的sql语句,以便程序员能够掌握LINQ的用法。

Download

一:Linq 实现模糊查询

string[] strs = {"andy","eric","amanda","abshu","baby"};

linq实现模糊查询有几种方法:

1)使用 Contains 来获取 数组 中是包含有 a 的数据;

var valContains = strs.Where(c => c.Contains("a")).ToList();
foreach (var val in valContains)
{
	Response.Write(val+"\r\n");
}
结果:

2)使用 IndexOf 来获取 数组 中是包含有 a 的数据;

var valIndexOf = strs.Where(c => c.IndexOf("a")>=0).ToList();
foreach (var val in valIndexOf)
{
	Response.Write(val + "\r\n");
}
结果:

3)使用 StartsWith 来获取 数组 中是  以a 开头的的数据;

var valStartsWith = strs.Where(c => c.StartsWith("a")).ToList();
foreach (var val in valStartsWith)
{
	Response.Write(val + "\r\n");
}
结果:

4)使用 EndsWith 来获取 数组 中是  以a结尾的数据;

var valEndsWith = strs.Where(c => c.EndsWith("a")).ToList();
foreach (var val in valEndsWith)
{
	Response.Write(val + "\r\n");
}
结果:

二:Linq 实现 传统Sql中的where Value in ( 1, 2, 3 )

int[] ints = { 10, 11, 12, 13, 101, 110, 120, 131, 31 };
var intContains = ints.Where(c => new[] { 10, 11, 131 }.Contains(c)).ToList();
foreach (var intContain in intContains)
{
	Response.Write(intContain + "\r\n");
}
结果:

三:Linq 实现 随机排序

var intOrder = ints.OrderBy(c => Guid.NewGuid());
foreach (var intContain in intOrder)
{
	Response.Write(intContain + "\r\n");
}
结果:

四:Linq 实现 合计、最大值、最小值的获取

合计:

var intSum = ints.Sum();
Response.Write(intSum + "\r\n");

最大值:

var intMax = ints.Max();
Response.Write(intMax + "\r\n");

最小值:

var intMin = ints.Min();
Response.Write(intMin + "\r\n");
结果:

五:Linq 实现 简单的 分页

int[] ints = { 10, 11, 12, 13, 101, 110, 120, 131, 31 };
var pageSize = 2;//每两个为一页
var page = 3;//当前页数,已经翻到第三页了。

var intPage = ints.Skip(pageSize*(page - 1)).Take(pageSize).ToList();
foreach (var intContain in intPage)
{
	Response.Write(intContain + "\r\n");
}
结果:

六:Linq 实现 去重

int[] ints2 = { 10, 11, 12, 120, 101, 110, 120, 131, 10 };
foreach (var i in ints2.Distinct())
{
	Response.Write(i + "\r\n");
}
结果: