首页 新闻 赞助 找找看

EF Codefirst EF 范围查找

0
悬赏园豆:40 [已解决问题] 解决于 2015-09-25 15:46

查询 “从 203-10-10 到 2013-11-10”,EF表达式该如何写,,,求大神指点,,,,,。。。

LDCD的主页 LDCD | 初学一级 | 园豆:12
提问于:2015-09-23 10:06
< >
分享
最佳答案
0

1:你可以直接用linq的where  2:也可以把查询条件直接传进去,可以用委托

收获园豆:30
稳稳的河 | 老鸟四级 |园豆:4216 | 2015-09-23 10:32
其他回答(3)
1

返回集合后再在集合里where吧,泛型儿List有自带的查询的。

/// <summary>
/// 建立 LessThan ( 小于 ) 查询条件
/// </summary>
/// <typeparam name="T">实体</typeparam>
/// <param name="q">动态查询条件创建者</param>
/// <param name="property">属性</param>
/// <param name="value">查询值</param>
/// <returns></returns>
public static ISpecification<T> LessThan<T, P>(this ISpecification<T> q, Expression<Func<T, P>> property, P value)
{
var parameter = property.GetParameters();
var constant = Expression.Constant(value);
Type type = typeof(P);
Expression nonNullProperty = property.Body;
//如果是Nullable<X>类型,则转化成X类型
if (IsNullableType(type))
{
type = GetNonNullableType(type);
nonNullProperty = Expression.Convert(property.Body, type);
}
var methodExp = Expression.LessThan(nonNullProperty, constant);
Expression<Func<T, bool>> lambda = Expression.Lambda<Func<T, bool>>(methodExp, parameter);
q.Predicate = q.Predicate.And(lambda);
return q;
}。你也可以参考这个,这是扩展的。基于Linq表达式的。

大楚打码人 | 园豆:4313 (老鸟四级) | 2015-09-23 10:34

Expression<Func<T, bool>> lambda = Expression.Lambda<Func<T, bool>>(methodExp, parameter);这个我用的比较多一些,做多条件查询挺好,自己用委托构建lambda表达式,楼主可以结贴了

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-09-23 10:41

@稳稳的河: 是的,封装一下,还是很不错的。

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2015-09-23 10:45
0

var start =DateTime.Parse("2013-10-10").Date;

var end=DateTime.Parse("2013-11-10").Date;

ctx.Tables.Where(t=>t.CreateTime>=start && t.CreateTime<=end)

收获园豆:10
小 鹏 | 园豆:214 (菜鸟二级) | 2015-09-23 16:17
0

先将字符串转换成时间格式的,然后用Lambda表达式查询就是了。楼上正解。。

mczxmin | 园豆:196 (初学一级) | 2015-09-24 12:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册