我正在学习ADO.NET实体框架。这是我的第一个例子。数据网格似乎占用了客户的长度,而不是我想要显示的实际列。以下是代码。
public partial class NewCustomerForm : Form
{
AFApp_H1Entities entities = new AFApp_H1Entities();
public NewCustomerForm()
{
InitializeComponent();
}
private void NewCustomerForm_Load(object sender, EventArgs e)
{
var query = from c in entities.Customers
where c.ZIP == "77080"
select c.CustomerName;
this.Controls.Add(dataGridView1);
dataGridView1.DataSource = query;
}
}
我假设我在控制台应用程序中运行相同的查询时会得到一些数据,但在网格中它给出了客户名称的长度。 ?
答案 0 :(得分:0)
此代码将为您提供查询返回的每一行的条目,即query.length(),如果您需要根据此代码过滤结果所需的不同内容。
修改
好的,所以这让我很烦,所以我写了一个小测试用例,我猜你正在尝试使用实体框架(如果没有请回帖),你确实说ADO但你的变量命名确实表明这可能不是只是普通的旧ADO。
所以这是我的数据库表创建脚本。
USE [Customers]
GO
/****** Object: Table [dbo].[Customer] Script Date: 04/02/2012 11:16:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Customer](
[id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Zip] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
现在在我的申请中有这个
public partial class Form1 : Form
{
private readonly CustomersEntities _entities =
new CustomersEntities(ConfigurationManager.ConnectionStrings["CustomersEntities"].ConnectionString);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
var query =
_entities.Customers.Where(c => c.Zip == "12345").Select(
c => new CustomerDataBinding {Name = c.Name, Zip = c.Zip});
Controls.Add(dataGridView1);
dataGridView1.DataSource = query;
}
}
public class CustomerDataBinding
{
public string Zip { get; set; }
public string Name { get; set; }
}
我在该数据库中有三个记录,两个具有相同的ZIP(无论它不是真正的zip格式),还有一个没有(用sql插入自己的数据)。
如果我运行此代码,我会让两个客户返回网格而不是预期的三个客户。
请注意,这不是实现此目的的最佳方式,但仅适用于基本示例。
顺便说一下,应用程序在运行
时看起来