1

まず第一に、私は非常に新しいです(noob)。おそらく私の質問は非常に愚かですが、行き詰まりました。これが状況です。

EF5.0を使用してwinformsデータベースアプリケーションのプログラミングを開始しました。すべてが順調です。次のような形式でやりたいことができます。

private void Form1_Load(object sender, EventArgs e)
{        
    using (var ctx = new pehkEntities())
    {
        var result = from k in ctx.Kolons
                     select new
                     {
                         KolonAdı = k.KolonAdi,
                         En = k.En,
                         Boy = k.Boy,
                         Yükseklik = k.Yukseklik,
                         ID = k.KolonID
                     };


        dataGridView1.DataSource = result.ToList();
    }
}

しかし、私のform1コードは現在本当に混乱しているので、クラスとメソッドを使用してそれをクリーンアップしたいと思います。program.csでクラスとメソッドを作成しようとしましたが、失敗しました。どうすれば修正できますか?

public class veritabani_islemleri
{
    public ???? kolonlistele()
    {
    using(pehkEntities ctx = new pehkEntities())



        var result =from k in ctx.Kolons
               select new
               {
                   KolonAdı = k.KolonAdi,
                   En = k.En,
                   Boy = k.Boy,
                   Yükseklik = k.Yukseklik,
                   ID = k.KolonID
               };

        return ????
    }
}

私の問題は、疑問符を埋めることができないことです。私は自分の形でこれをやりたいだけです。

private void Form1_Load(object sender, EventArgs e)
{
   dataGridview.DataSource=myfunction();  
}

または、私の方法が完全に間違っている場合、これをどのように行う必要がありますか?

4

2 に答える 2

2

このために:あなたは以下のステップに従います:-

  1. ViewModelクラスを作成する
  2. そして、フォームで再利用されるプロパティを作成します
  3. 次に、プロパティを作成する静的メソッドを作成します
  4. そして、そのモデルをフォームで使用します。

例えば ​​:

public class  veritabani_islemleriModel{
 public String KolonAdi { get; set; }
 public String En { get; set; }
 public String Boy { get; set; }
 public String Yükseklik { get; set; }
 public String ID { get; set; }
}

and then 
public class veritabani_islemleri
{
    public List<veritabani_islemleriModel> kolonlistele()
    {
    using(pehkEntities ctx = new pehkEntities())



        var result =from k in ctx.Kolons
               select new veritabani_islemleriModel
               {
                   KolonAdı = k.KolonAdi,
                   En = k.En,
                   Boy = k.Boy,
                   Yükseklik = k.Yukseklik,
                   ID = k.KolonID
               };

        return result.Tolist();
    }
}
于 2012-09-17T11:18:43.623 に答える
1

現在のLinqクエリは、「匿名型」と呼ばれるものを返しています(ここを参照)。ビルド時に、コンパイラは実際に、すべての適切なプロパティを持つデータを保持するクラスを作成しています。ただし、C#は関数から匿名型を返すことができないため、返す型がわかりません。

これを解決する最良の方法は、データを保持するための独自の実際のクラスを作成することです。これは、Pushpendraが回答で行うことです。

public class veritabani_islemleriModel{
 public String KolonAdi { get; set; }
 public String En { get; set; }
 public String Boy { get; set; }
 public String Yükseklik { get; set; }
 public String ID { get; set; }
}

veritabani_islemleriModelこれで、コンパイラが生成した匿名型の代わりに、メソッドのシグネチャとreturnステートメントで使用できる実際の型ができました。

于 2012-09-17T11:47:01.880 に答える