博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linq中使用反射实现--LINQ通用数据表绑定DataGrid控件的方法(原创)
阅读量:4608 次
发布时间:2019-06-09

本文共 2783 字,大约阅读时间需要 9 分钟。

项目需求,因为项目中存在很多表,这些表的内容需要呈现给客户浏览.转载请注明出处

相信很多写过程序的设计者很容易的用以下方式实现

在SqlConnect ,DataSet 的方式,我们很轻松的可以通过Sql的字符变化来实现单表动态查询

string sTableName="Dep";string connectionstr="连接字符串";Sql ="select * from "+sTableName;SqlConnection conn=new SqlConnection();conn.ConnectionString = _ConnectionString;conn.open();SqlDataAdapter adapter=new SqlDataAdapter(sql,conn);DataSet ds=new DataSet();adapter.Fill(ds);//绑定数据 this.GridControl.DataSource=ds.Tables[0];....

以上都是书本上很经典的范例,我就不详细列出

 

 在开发Linq项目过程中,需要对一个表的数据进行查询,通常Linq的语法一般是这样:

DataClass1DataContext context=new DataClass1DataContext();System .Data.Linq.Table
dt=context.GetTable
();//重复写这句//绑定数据 this.GridControl.DataSource=dt;

 

按照上面的做法.每次使用不用的表,我们必须重复的写以上的代码,从软件设计的角度出发,这些很多时候是无用的操作.

 

经过不断地测试,通过反射的方法可以实现动态表查询

如果表名发生变化,则我们不能直接实现<TableName>来实现

 

public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void simpleButton1_Click(object sender, EventArgs e)        {            getLinqCommonTable("DepartmentShip");              getLinqCommonTable("DepartmentShip"," OID=2");
 
}        ///         /// 通过动态字符串获取单表数据        ///         private void getLinqCommonTable(string sTableName)        {            ArrayList list = new ArrayList();            DataClasses1DataContext Context = new DataClasses1DataContext();            string sNamespace = new DataClasses1DataContext().GetType().Namespace;            Type t = Type.GetType(String.Format("{0}.{1}", sNamespace, sTableName), true, true);            var temp = Activator.CreateInstance(t);                     var q = Context.ExecuteQuery(typeof(DepartmentShip), "select * from DepartmentShip");            foreach (object c in q)            {                list.Add(c);                Console.WriteLine(c);            }            gridControl1.DataSource = list;            gridControl1.Refresh();        }        ///         /// 通过动态字符串获取单表数据        ///         private void getLinqCommonTable(string sTableName,string condition)        {            ArrayList list = new ArrayList();            DataClasses1DataContext Context = new DataClasses1DataContext();            string sNamespace = new DataClasses1DataContext().GetType().Namespace;            Type t = Type.GetType(String.Format("{0}.{1}", sNamespace, sTableName), true, true);            var temp = Activator.CreateInstance(t);            var q = Context.ExecuteQuery(temp.GetType(), "select * from DepartmentShip where "+condition);            foreach (object c in q)            {                list.Add(c);                Console.WriteLine(c);            }            gridControl1.DataSource = list;            gridControl1.Refresh();        }          }

通过上述代码我们可以实现LINQ单表通过查询方法

 

转载于:https://www.cnblogs.com/meetweb/p/3326403.html

你可能感兴趣的文章
iOS深入学习 (Block全面分析)
查看>>
NSData的一些用法
查看>>
element-ui公用模态框自定义样式与scoped样式生效问题解决方案
查看>>
数字效率Evernote超效率数字笔记术
查看>>
Servlet技术和Servlet生命周期:
查看>>
redis和spring集成(注解实现,方便,快捷)
查看>>
《C》数据类型
查看>>
Socket Multicast 通信攻略
查看>>
Python中关于csv的简单操作
查看>>
Long-distance navigation and magnetoreception in migratory animals(迁徙动物中的长距离导航和磁感应)...
查看>>
html+jq实现简单的图片轮播
查看>>
BroadcastReceiver和Intetnt的理解 Day34
查看>>
ajax 使用$("#form").serilize()
查看>>
pta 1144 The Missing Number
查看>>
数据库相关
查看>>
log4net按照不同的【LEVEL】级别输出到不同文件
查看>>
412. Fizz Buzz
查看>>
RegCreateKey
查看>>
position 中五种位置的区别
查看>>
TCP/IP之TCP的建立与终止
查看>>