1

首先,我很新(菜鸟)。可能我的问题很愚蠢,但我被卡住了。这是情况。

我开始使用 EF 5.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可以在方法签名和返回语句中使用的真实类型,而不是编译器生成的匿名类型。

于 2012-09-17T11:47:01.880 回答