游戏技术文章

Linq语法

时间:2017-4-27 15:26:16  作者:棋牌资源网  来源:棋牌资源网  查看:8861  评论:0
内容摘要:Linq简介:什么是Linq:语言集成查询,和C#的集合的扩展方法作用类似辟谣:Linq to sql微软已经不再推荐使用,但Linq to object 和Linq to entity(重点发展)任然在发展Linq to object操作的是内存中的数据,Linq to Ent...
Linq简介:
复制代码
什么是Linq:语言集成查询,和C#的集合的扩展方法作用类似
辟谣:Linq to sql微软已经不再推荐使用,但Linq to object 和Linq to entity(重点发展)任然在发展

Linq to object操作的是内存中的数据,Linq to Entity操作的是EF中的数据,这两者结合起来使用就需要注意一些问题了:
1、Linq to object join Linq to Entity,使用这样的方式进行连接查询时,无论如何写数据的过滤条件,都会造成EF进行全表扫描。但是我们不用对object数据进行处理就可以实现连接查询。
2、Linq to Entity join Linq to object ,使用这种方式我们写上数据的过滤条件后,就不会照成ef进行全表扫描,但是我们用于连接的object数据只能是Int32 ,String,Guid等基元数据,我们在进行连接查询时要提前把数据处理好。
注:Linq to Entity查询数据时,在没有遍历数据前(ToList(),ToArray()等,也就是数据还没有被拿到本地内存),表达式中不能包含我们自定义方法和其他涉及类型装换的方法都不能使用,不然会出现异常“不能将方法***转换为存储**”。原因是使用EF操作数据库时,EF是把我们的Linq(集合扩展)翻译成sql语句去数据库执行的,不能识别我们的自定义方法也很正常。
复制代码

 

 语法:

1 var r2 = from t in test 
2 where t.Id>1 
3 select t

按条件选择:

复制代码
var list3 = list.Where(p => p.Age > 5).Select(p => new { name = p.Name, age = p.Age } );
//var list3 = from p in list
// where p.Age > 5
// select new { 姓名 = p.Name,年龄=p.Age};

foreach (var person in list3)
{
Console.WriteLine(person);
}
复制代码

 

排序:

复制代码
var list3 = from p in list
orderby p.Age, p.Salary descending
select p;//先通过年龄默认的升序排序,年龄相同的话在通过工资降序排序
foreach (var person in list3)
{
Console.WriteLine(person);
}
复制代码

 


分组:

复制代码
var list3 = from p in list
group p by p.Age into g
select g;
foreach (var person1 in list3)
{
foreach (var person in person1)
{
Console.WriteLine(person);
}
}
复制代码

 


表间连接:

复制代码
var list1 = from d in dogs
join m in masters on d.MasterId equals m.Id//这里只能使用equals
select new { mastername = m.Name, dogname = d.Name };
foreach (var p1 in list1)
{
Console.WriteLine(p1);
}
复制代码

 

注:

复制代码
只有 Where,Select,OrderBy,GroupBy,Join 等这些能用 linq 写法,如果要用下面的 “ Max,Min,Count,Average,Sum,Any,First,FirstOrDefault,Single,SingleOrDefault,Distinct,Skip,Ta ke 等”则还要用 lambda 的写法(因为编译后是同一个东西,所以当然可以混用)。
var r1 = from p in list 
group p by p.Age into g
select new { Age = g.Key, MaxSalary = g.Max(p=>p.Salary), Count = g.Count() }; 
int c = r1.Count(); 
var c = (from p in list where p.Age>3 select p ).Count();
复制代码

 

标签:Linq语法 

欢迎加入VIP,【VIP售价:只要288元永久VIP会员】畅享商业棋牌游戏程序下载,点击开通!

下载说明


☉本站所有源码和资源均由站长亲自测试-绝对保证都可以架设,运营!
☉如源码和资源有损坏或所有链接均不能下载,请告知管理员,

☉本站软件和源码大部分为站长独资,资源购买和收集,放心下载!

☉唯一站长QQ:1004003180  [人格担保-本站注重诚信!]

☉购买建议E-mail:1004003180@qq.com   源码收购 E-mail:1004003180@qq.com    

☉本站文件解压密码  【文章内都自带解压密码,每个密码不同!】


本站提供的所有源码,均来源站长提供,仅学习交流 浙ICP备09009969号

由此产生不良后果和法律责任与本站无关,如果侵犯了您的版权,请来信告知 1004003180@qq.com 将及时更正和删除! 

Copyright © 2008-2024 棋牌资源网,你身边的棋牌资源下载站    All Rights Reserved