C#桌面应用:使用ADO.NET实体数据模型在DataGridView显示指定列
在C#桌面应用中用EF+DataGridView显示指定列的方法
嘿,这需求太常见了,给你两种实用的实现方式,按需选就行:
方法一:查询时只获取需要的列(推荐)
这种方式最高效,因为从数据库就只拉取你要的Number、Phone、Location三列数据,避免冗余数据传输。用LINQ配合EF就能轻松实现:
// 假设你的DbContext实例是db,数据表对应的实体类是YourTable(比如叫Customer、Record之类的) using (var db = new YourDbContext()) { // 用Select筛选出需要的列,返回匿名类型集合 var targetData = db.YourTable .Select(item => new { item.Number, item.Phone, item.Location }) .ToList(); // 直接绑定到DataGridView dataGridView1.DataSource = targetData; }
绑定后DataGridView会自动生成对应三列的表头和数据,完全符合你的期望效果,不用额外调整列的显示状态。
如果后续需要对这些数据做更多操作(比如修改后回存),也可以定义一个DTO类(数据传输对象)来替代匿名类型:
// 定义DTO类 public class RecordDto { public string Number { get; set; } public string Phone { get; set; } public string Location { get; set; } } // 查询时映射到DTO var targetData = db.YourTable .Select(item => new RecordDto { Number = item.Number, Phone = item.Phone, Location = item.Location }) .ToList(); dataGridView1.DataSource = targetData;
方法二:绑定全量数据后隐藏不需要的列
如果因为某些原因必须加载全表数据,那可以先绑定所有列,再手动隐藏不需要的列:
using (var db = new YourDbContext()) { // 加载全表数据 var allData = db.YourTable.ToList(); dataGridView1.DataSource = allData; // 隐藏不需要的列 dataGridView1.Columns["ID"].Visible = false; dataGridView1.Columns["CreateDate"].Visible = false; dataGridView1.Columns["CreateUser"].Visible = false; }
这种方法简单直接,但会加载多余数据,适合数据量小或者需要用到其他列数据的场景。
内容的提问来源于stack exchange,提问作者Hasan Kaan TURAN
相关产品推荐
相关产品推荐

