返回顶部
首页 > 资讯 > 精选 >C#怎么根据前台传入实体名称实现动态查询数据
  • 529
分享到

C#怎么根据前台传入实体名称实现动态查询数据

2023-07-06 02:07:15 529人浏览 安东尼
摘要

本篇内容主要讲解“C#怎么根据前台传入实体名称实现动态查询数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#怎么根据前台传入实体名称实现动态查询数据”吧!1、获取实体类型var e

本篇内容主要讲解“C#怎么根据前台传入实体名称实现动态查询数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#怎么根据前台传入实体名称实现动态查询数据”吧!

1、获取实体类型

var entityType=Assembly.Load("XXX.Entity").GetTypes().Any(a =>a.Name == entityName).FirstOrDefault().FullName;

如果需要加载多个类库(以下是其中一种方式)

1、先获取DBContext里面的对象来匹配实体名称得到他的命名空间

var name = DBContext.Model.GetEntityTypes().Where(a => a.ClrType.Name == "传入的实体名称").Select(a => a.ClrType.Namespace).FirstOrDefault();

2、根据命名空间匹配到程序集

var assemblyName = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.FullName.Contains(name)).Select(a => a.FullName).FirstOrDefault();

3、获取实体类型

var entityType = Assembly.Load(assemblyName).GetTypes().Where(a => a.Name == "传入的实体名称").FirstOrDefault();

2、创建动态仓储

var repositoryType = typeof(Repository<>).MakeGenericType(entityType);//Repository<> 一般项目会封装仓储层放一些CRUD的公共方法var repository = Activator.CreateInstance(repositoryType, DBContext);var queryMethod = repositoryType.GetMethod("GetList"); //这里写需要调用的方法名称

3、设置查询参数

1、拼接lambda

var parameterExpression=Expression.Parameter(entityType,"x");var propertyExpression = Expression.Property(parameterExpression, "字段名称");var constantExpression = Expression.Constant(ConvertFieldValue("字段的值", propertyExpression.Type));var equalExpression = Expression.Equal(propertyExpression,constantExpression);var lambdaExpression = Expression.Lambda(equalExpression, parameterExpression);private object ConvertFieldValue(string fieldValue, Type type){     if (type == typeof(DateTime))           {               return DateTime.ParseExact(fieldValue, "dd/MM/yyyy HH:mm:ss",CultureInfo.InvariantCulture);           }           else if (type == typeof(bool))           {               return Convert.ToBoolean(fieldValue);           }           else if (type == typeof(int))           {               return Convert.ToInt32(fieldValue);           }           else if (type == typeof(long))           {               return Convert.ToInt64(fieldValue);           }           else           {               return fieldValue;           }}

2、设置参数

//获取参数列表var parameters = queryMethod.GetParameters();var arguments = new List<object>();for (int i = 0; i < parameters.Length; i++){   if (i == 0)   {      //如果不需要根据条件查询可以直接设置为默认值      arguments.Add(lambdaExpression);    }   else   {      //设置其他参数为默认值      arguments.Add(Missing.Value);   }}

4、调用方法

var list = queryMethod.Invoke(repository, arguments.ToArray());

到此,相信大家对“C#怎么根据前台传入实体名称实现动态查询数据”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: C#怎么根据前台传入实体名称实现动态查询数据

本文链接: https://lsjlt.com/news/357529.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#根据前台传入实体名称实现动态查询数据
    目录前言1、获取实体类型2、创建动态仓储3、设置查询参数1、拼接lambda2、设置参数4、调用方法前言 项目中时不时遇到查字典表等数据,只需要返回数据,不需要写其他业务,每个字典表...
    99+
    2023-05-15
    C#实现动态查询数据 C#动态查询数据 C#查询数据
  • C#怎么根据前台传入实体名称实现动态查询数据
    本篇内容主要讲解“C#怎么根据前台传入实体名称实现动态查询数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#怎么根据前台传入实体名称实现动态查询数据”吧!1、获取实体类型var e...
    99+
    2023-07-06
  • ODBC Oracle连接实现动态数据查询
    要实现动态数据查询,可以使用ODBC连接Oracle数据库,然后通过使用参数化查询来动态地构建查询语句。以下是一个示例代码,演示如何使用ODBC连接Oracle数据库并执行动态数据查询: import pyodbc # 连接Oracle数...
    99+
    2024-07-15
    oracle
  • c#跨窗体传递数据怎么实现
    在C#中,可以通过使用委托来实现跨窗体的数据传递。 首先,在发送数据的窗体中定义一个委托类型和事件,用于传递数据: public d...
    99+
    2024-03-02
    c#
  • 怎么让java只根据数据库表名自动生成实体类
    这篇文章将为大家详细讲解有关怎么让java只根据数据库表名自动生成实体类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。根据数据库表名生成实体类公司用的jpa,没有用mybatis。所以也没有用mybati...
    99+
    2023-06-15
  • c# winform动态更新数据怎么实现
    在C# WinForms中实现动态更新数据,可以使用数据绑定和事件处理来实现。 使用数据绑定 创建一个数据源,例如一个List或D...
    99+
    2023-10-26
    c# winform
  • 怎么用jQuery AJAX实现后台传数据
    这篇文章主要介绍了怎么用jQuery AJAX实现后台传数据的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用jQuery AJAX实现后台传数据文章都会有所收获,下面我们一...
    99+
    2024-04-02
  • oracle怎么实现动态查询前一天早八点到当天早八点的数据功能
    这篇文章给大家分享的是有关oracle怎么实现动态查询前一天早八点到当天早八点的数据功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。需要查询前一天早八点到当天早八点的数据这里是...
    99+
    2024-04-02
  • ThinkPHP中怎么实现查询数据集
    本文小编为大家详细介绍“ThinkPHP中怎么实现查询数据集”,内容详细,步骤清晰,细节处理妥当,希望这篇“ThinkPHP中怎么实现查询数据集”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、基本查询首先,我们...
    99+
    2023-07-06
  • springboot异步查询数据怎么实现
    在Spring Boot中,可以使用@Async注解来实现异步查询数据。以下是实现步骤: 在主应用程序类中添加@EnableAsy...
    99+
    2024-03-07
    springboot
  • Aurora怎么实现跨数据库查询
    要实现跨数据库查询,Aurora可以使用数据复制和联合查询来实现。以下是一些步骤和方法: 配置数据复制:Aurora支持将数据从...
    99+
    2024-04-09
    Aurora 数据库
  • MySQL分组查询数据怎么实现
    要在MySQL中实现分组查询数据,可以使用GROUP BY子句来分组查询结果。以下是一个简单的示例: 假设我们有一个名为studen...
    99+
    2024-04-02
  • MySQL怎么实现数据分页查询
    在MySQL中,可以使用LIMIT子句来实现数据分页查询。LIMIT子句用于限制查询结果返回的行数,可以指定返回的起始行和总行数。 ...
    99+
    2024-05-24
    mysql
  • MySQL数据库查询中怎么实现多表查询
    今天小编给大家分享一下MySQL数据库查询中怎么实现多表查询的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、多表查询多表查...
    99+
    2023-06-29
  • C#链接SQLServer实现插入和查询数据源代码
    数据的查询: private void FullTab() {         SqlConn...
    99+
    2024-04-02
  • Oracle中怎么实现跨平台数据传输
    在Oracle中实现跨平台数据传输通常可以通过以下几种方式: 使用Oracle Data Pump:Oracle Data Pu...
    99+
    2024-04-19
    Oracle
  • MongoDB中怎么实现数据查询操作
    今天就跟大家聊聊有关MongoDB中怎么实现数据查询操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 任何数据库之中,...
    99+
    2024-04-02
  • SQLServer中怎么实现层次数据查询
    SQLServer中怎么实现层次数据查询,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  SQLServer2000层次数据查询的实现方法...
    99+
    2024-04-02
  • sql数据库查询语句怎么实现
    这篇文章将为大家详细讲解有关sql数据库查询语句怎么实现,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 sql数据库查询语句的完整语法是“Se...
    99+
    2024-04-02
  • 数据库中怎么实现分页查询
    数据库中怎么实现分页查询,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、 MySQL 数据库分页查询 MySQL数据库实现分...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作