2012-03-30 1 views
1

私は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

このコードは、このコードで与えられた結果をフィルタリングする必要がある場合は、query.length()で返されるすべての行のエントリを提供します。

編集

OKこれは、私は、あなたがADOを言うが、あなたの変数の命名んあなたは(バック投稿してくださいされていない場合)エンティティフレームワークを使用しようとしている推測していますので、私は小さなテストケースを書いた私を悩ませたので、これは単なる古いADOではないかもしれないことを示しています。

だから私のデータベーステーブル作成スクリプトです。

私appicationで今
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形式の問題ではありません)と1つのない(と、そのデータベース2内の3つのレコードを持ってきていますSQLで独自のデータを挿入します)。

私はこのコードを実行すると、グリッドに2人の顧客が返され、3人が返されることはありません。

これは正確にこれを実現する最良の方法ではありませんが、基本的な例では機能します。

経由でアプリがHiはなぜそれは私がquery.length与えている

+0

実行時にthisに見えますか? c.CustomerNameを選択すると、77080の郵便番号に住んでいるすべてのcustomerNamesを私に渡すことはできませんか? – IrtizaRizvi

+0

は、クエリがフィールドの顧客名の値と等しいため、選択された各顧客がファーストネーム(その値がヌルであっても)がまだエントリであるため、query.lengthはZIP 77080の顧客と同等です。それが理由です。 SQLクエリを試してみて、結果が同じであることを確認してください。あなたは私に77080のものだけでなく、すべての顧客の長さを与えることを教えていますか?クエリでカウントするとどうなりますか? –

+0

変更された例、これを貼り付けて、何が起こるかを見てみてください –

関連する問題