DbSet 两种 Where 查询的性能问题

说白了 DBSet.Where() 有两个重载,一个是IQueryable还有一个是IEnumerable,前者则是会延迟执行,而后者则是将整个数据集加载出来之后再进行Where查询。 IQueryable这个查询对象接收的是Expression<Func<T,bool>>,也就是一个表达式树,他将会把查询条件解析成SQL,在数据源提供器里面执行查询。 而List是一个集合,他接收的是一个Func<T,bool>,也就是一个查询委托,他则是将整个DBSet加载出来放在内存之后,再进行查询,所以后者性能堪忧。 详细请查看StackOverflow上面的这两篇问题: Func vs Manually expression performance in C# lambda Why would you use Expression rather than Func?

C# 当中 Lambda 函数的匿名类型推断

举个栗子: 1 2 3 4 5 6 7 8 9 10 delegate T MyFunc<T>(); static void WriteResult<T>(MyFunc<T> function) { Console.WritleLine(function()); } ... WriteResult(delegate { return 5; }); 在C#2.0当中以上代码会报错,因为C#2的类型推断是单独针对每一个实参来进行的,从一个实参推断出的类型无法直接用于另外一个实参。在本例当中,function的输入值是T,返回值也是T,C#2.0的简单规则似乎无法为我们解决问题。 这个时候有两种解决办法: 1 2 WriteResult<int>(delegate { return 5; }); // 显示指定类型实参 WriteResult((MyFunc<int>)delegate { return 5; }); // 将匿名委托强制转换为具体的委托类型,而不是泛型委托 而C#3则做了更为精致的工作,他能够像处理隐式类型数组一样来处理匿名委托的返回类型。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 delegate T MyFunc<T>(); static void WriteResult<T>(MyFunc<T> function) { Console.

SQL Server 压缩日志

1 2 3 4 5 6 7 8 9 ALTER DATABASE DataBaseName SET RECOVERY SIMPLE WITH NO_WAIT ALTER DATABASE DataBaseName SET RECOVERY SIMPLE --简单模式 DBCC SHRINKFILE (N'DataBaseName_log' , 11, TRUNCATEONLY) -- 11是大小 11M ALTER DATABASE DataBaseName SET RECOVERY FULL WITH NO_WAIT ALTER DATABASE DataBaseName SET RECOVERY FULL --还原为完全模式

MySql DateTime 自动变更的坑

在blog开发的时候,下午就遇到过更新实体的时候,CreateTime自动更新的问题,当时还以为是自己代码写错了,找了半天也没有在代码找到变更日期的地方,之后又查找EF相关资料,无果,就没有管他。 结果晚上用Navicat的数据库更改一个字段就造成了CreateTime的自动变更,这就很尴尬了。搜索了一番,才知道mysql的DateTime类型有一个自动更新时间戳选项。如图: 取消勾选即可。

用 CSS3 实现一个透明色的按钮

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 /*a标签鼠标移入*/ a:hover { border-color:white; /*边框颜色*/ color:black; /*文字颜色*/ background-color:white; /*背景变白*/ } /*移除a标签样式*/ a:link,a:visited{ text-decoration:none; } .tm-intro-link { border:2px solid; /*边框*/ color:white; /*边框及文字颜色*/ /*border-radius:50px;圆角*/ display:inline-block; padding:15px 60px; } /*渐变*/ a{ transition:all 0.3s ease } <a href="#" class="tm-intro-link">我是一个测试按钮</a> 初学前端,感觉好难。
Built with Hugo
主题 StackJimmy 设计