LINQ to Entities 实现sql 关键字"In"方式总结
在LINQ to Entities中没有办法再像 LINQ to SQL 中一样使用 Contains 的方法来实现sql "in" 关键字
下面代码在 LINQ to SQL 中可行 在LINQ to Entities却无法运行:
var s = db.Account.Select(c => c.ID);
var ret =(from t in db.Profile
where s.Contains(t.ID)
select t).ToList();
替代方法1:使用方法Any
var ids=db.Account.Select(c => c.ID);
var ret = (from t in db.Profile where ids.Any(c=>c==t.UserID) select t).ToList();
使用方法Any替换法搞了好久都没法实现直接对数组Any,下列代码仍无法执行:
int[] ids = new int[]{10101,10005,10007};
var ret = (from t in db.Profile where ids.Any(c=>c==t.UserID) select t).ToList();
于是继续Goolge寻找第二种方法,在MSDN论坛上找一个构造Lambda语句的方法
替代方法2:构造Lambda语句
private static Expression<Func<TElement, bool>> BuildWhereInExpression<TElement, TValue>(Expression<Func<TElement, TValue>> propertySelector, IEnumerable<TValue> values)
{
ParameterExpression p = propertySelector.Parameters.Single();
if (!values.Any())
return e => false;
var equals = values.Select(value => (Expression)Expression.Equal(propertySelector.Body, Expression.Constant(value, typeof(TValue))));
var body&
相关文档:
1) 统计各个系的学生信息
select count(Sname) 总人数,Sdept from Student group by Sdept
2) 查询信管系学生的最大年龄和最小年龄
select MAX(Sage) 最大年龄,MIN(Sage) 最小年龄 from Student where
Sdept='信管系'
3) 查询信管系最大年龄和最小年龄的学生的姓名
select Sname from St ......
1.分析系统日志,一行一行看着实在累人,很多无关日志,能过滤下就好了。文本工具功能实在有限,于是乎,将windows系统日志导入sql server中,直接sql之……。实验了几把,最好的是,直接将系统日志导出为文本的,直接tab分割的,导入sql的时候:
新建数据库->导入数据->下一步->数据源选择文本文件- ......
SQL Server 查询
查询的时候应该尽量按照复合索引中的顺序来做条件查询;(比如IXC中spInterActiveInstance_GetByIDToStat条件and ProcessState<>99的位置);
如果在程序中有For或者是Foreach,在存储过程中又有IF Exists,那就要看是否可以在表中加入复合索引了,IF Not Exists可以转换为IF Exists来使用索引; ......
1.sql存储过程概述
2.SQL存储过程创建
3.sql存储过程及应用
4.各种存储过程使用指南
5.ASP中存储过程调用的两种方式及比较
6.SQL存储过程在.NET数据库中的应用
7.使用SQL存储过程要特别注意的问题
1.sql存储过程概述
在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是SQL 语 ......