Entity Framework多视图条件查询、排序
来源:互联网 发布:马克斯cms论坛 编辑:程序博客网 时间:2024/05/22 06:16
Entity Framework在C#中常常用于底层和数据库交互,也就是DAL层。而Entity Framework中与数据库交互时底层与数据库通讯的重要的容器就是DbContext。
而使用DbContext对数据库联表查询是最常见的操作。这里介绍多视图联合查询的加条件,等一些内容
using System;using System.Collections.Generic;using System.Linq;using System.Linq.Expressions;using System.Text;namespace RBIM.COMMON{ public static class PredicateBuilder { /// <summary> /// 机关函数应用True时:单个AND有效,多个AND有效;单个OR无效,多个OR无效;混应时写在AND后的OR有效 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static Expression<Func<T, bool>> True<T>() { return f => true; } /// <summary> /// 机关函数应用False时:单个AND无效,多个AND无效;单个OR有效,多个OR有效;混应时写在OR后面的AND有效 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static Expression<Func<T, bool>> False<T>() { return f => false; } public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1, Expression<Func<T, bool>> expr2) { var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>()); return Expression.Lambda<Func<T, bool>> (Expression.Or(expr1.Body, invokedExpr), expr1.Parameters); } public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1, Expression<Func<T, bool>> expr2) { var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>()); return Expression.Lambda<Func<T, bool>> (Expression.And(expr1.Body, invokedExpr), expr1.Parameters); } }}数据接口实现层:
/// <summary> ///获取所有数据TransducerConfiguration /// </summary> public IList<FindStressDetectionByProjectKey> GetStressDetectionInfoList(Dictionary<string, string> dicparams) { try { Expression<Func<FindStressDetectionByProjectKey, bool>> searchPredicate = PredicateBuilder.True<FindStressDetectionByProjectKey>(); foreach (string key in dicparams.Keys) { string condition = string.Empty; switch (key.ToLower()) { case "projectkey": //case自己扩展 condition = dicparams[key]; searchPredicate = searchPredicate.And(c => c.ProjectKey.ToString() == condition); break; case "smsid": condition = dicparams[key]; searchPredicate = searchPredicate.And(c => c.Smsid == condition); break; case "tdh": condition = dicparams[key]; searchPredicate = searchPredicate.And(c => c.TDH == condition); break; default: break; } } return _dbContext.FindStressDetectionByProjectKey.Where(searchPredicate.Compile()).OrderByDescending(c => c.ID).ToList(); } catch (EntityException e) { throw e.InnerException; } 而UI层调用时:
Dictionary<string, string> dicparams = new Dictionary<string, string>();IList list = HardwareServiceFacade.hardwareService.SoapService.GetStressDetectionInfoList(dicparams).ToList();
0 0
- Entity Framework多视图条件查询、排序
- mvc entity framework 多条件 查询
- mvc entity framework 多条件 查询
- Entity Framework多表多条件动态查询
- Entity Framework 的多条件组合查询和 LIKE 查询(Combination search and simulate LIKE search with Entity Framework
- Entity framework多表查询
- 使用Entity Framework时,如何构建动态排序条件
- Entity Framework 动态查询
- entity framework 内联查询
- Entity Framework 简单查询
- Entity Framework 查询
- Entity framework查询原理
- Entity Framework4.1实现动态多条件查询、分页和排序
- Entity Framework4.1实现动态多条件查询、分页和排序
- 将Entity Framework生成的查询条件转换对应的SQL语句
- Entity Framework之查询总结
- Entity Framework(3)查询
- mysql 多条件排序查询
- RPC-<浅出篇>
- csu:1887: Cuckoo Hashing
- linux 高级编程
- 【LeetCode刷题记录】9. Palindrome Number
- 使用Jsoup加代理发送get请求
- Entity Framework多视图条件查询、排序
- 思维导图工具 Mindiet MindManager的简单实用
- C#学习笔记—字符串
- 【51Nod】1018 排序
- Eclipse中导入Android项目后缺失android-support-v4.jar或v7.jar
- angular入门学习控制器
- 10692
- 使用逻辑卷管理器管理灵活存储
- ADO.NET