我有个员工表employee(string name,int departmentID),此处departmentID存的是部门ID,我还有一张部门表department(int departmentID,string departmentName),我现在做了一个列表界面要显示员工数据,列表中用的是datagridview控件,如果用Datatable查询的话,我只要关联表查询就可以了,但我现在不想用datatable,我想用实体类,如果这样的话,我的列表界面员工部门一栏肯定显示的是部门id,但我要显示的是部门名称,请问这种情况怎么处理?我看了nhibernate中处理的方法是在员工实体类中定义部门的映射,但这种方式,如果数据量大的话就会显示很慢,也有可能超时,我测试的时候查询15万条数据,说到这里有人会建议说这么多数据为什么不分页,我实际操作当中会考虑分页,但这里只是纯技术讨论,不考虑分页。
这种问题说白了也就是如何用实体类的方式展示多表查询的结果,请问你们是怎么做的?谢谢。
这种问题说白了也就是如何用实体类的方式展示多表查询的结果,请问你们是怎么做的?谢谢。
解决方案 »
- 求个对色问题的算法。只要能解出来就行。不管什么算法。
- (asp.net mobile)送分
- c#怎样遍历 DropDownList1的每个ListItem的值
- 请问VS2003,2005,2008可以装在一台机器上吗?
- 请各位有空的帮我看看下面的代码,我的代码老实出现超时的错。请帮我改进一下。
- DataGridView在绑定数据后,更改列内容的问题?
- 不知道可否在自己定义的线程里面通过begin invoke来让主线程调用messagebox函数?
- c#窗口实时更新
- 请问在C#中如何访问远程文件? 急!!!!!!!
- 请教:怎么把dataset里的数据和dbgrid联系起来?谢谢!请看源码。。
- 求助!!!C#窗口间的数据传递
- 求助:c# winform 程序有登录窗口和主窗口,如何实现30分钟没有对该程序进行任何操作,程序自动退出到登录窗口,谢谢!
然后转化为List集合
{
public int id{ get; set; }
public string name{ get; set; }
public string departmentName{ get; set; }
}DataTable dt=DBHelper.getEmployeeList();
List<employees> eList=mew List<employees>();
for (int i = 0; i < dt.rows.count; i++)
{
employees e=new employees();
e.name=dt.rows[0]["name"].tostring();
e.departmentName=dt.rows[0]["departmentName"].tostring();
eList.add(e);
}
datagridview.DataSource=eList;
然後再把它轉成實體類;2.分別把2個表的數據讀取到2個datatable裏面,
循環employee表轉化為實體類的時候,有部門id嘛,去department表內找對應的部門,給部門屬性賦值。
這個方面不會快!
下次优先查找这个集合,如果没有再去查找数据库。这样能节约一点时间
我和三楼的意思差不多,但是这样两种方法用哪个取决于你的数据模式
如果你的部门很多,而且每次用到的部门很少 那么用我的方法
如果你的部门很少,而且基本上都用到了那么用3楼的方法