首先,我很新(noob)。可能我的问题非常愚蠢,但我卡住了。情况就是这样。
我开始使用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();
}
或者,如果我的方法完全错误,我应该怎么做?
答案 0 :(得分:2)
为此:您按照以下步骤操作: -
例如:
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();
}
}
答案 1 :(得分:1)
您当前的Linq查询正在返回所谓的“匿名类型”(see here)。在构建时,编译器实际上正在创建一个类来保存具有所有正确属性的数据。但是,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语句中使用它,而不是编译器生成的匿名类型。