我的数据库表Staff
包含Name
,Email
,Address
和DateOfBirth
列。在我的Web应用程序中,我有一个单独的类ClassMyBase
,有两种方法。其中一种方法使用LINQ to Entities:
public static List<Staff> ShowAll()
{
using (ModelPersonnelContainer myContainer = new
ModelPersonnelContainer())
{
return myContainer.Staff.ToList();
}
}
...然后在ButtonShowAll
中的WebForm1
事件处理程序:
protected void ButtonShowAll_Click(object sender, EventArgs e)
{
GridViewAll.DataSource = ClassMyBase.ShowAll();
GridViewAll.DataBind();
}
到目前为止一直很好,但是如果我向我的public static List<Staff> ShowAll()
添加过滤:
public static xyz ShowAll()
{
using (ModelPersonnelContainer myContainer = new
ModelPersonnelContainer())
{
selectedRrows=from item in myContainer.Staff
select new
{
Name=item.Name,
Email=item.Email
}
}
}
我的方法不起作用,因为返回数据类型与以前不同。任何简单的解决方这种返回数据类型xyz
可以是什么?
如果我把所有东西放在一起(我的项目中没有单独的类)并且只有ButtonShowAll
它会正常工作,所以这样:
protected void ButtonShowAll_Click(object sender, EventArgs e)
{
using (ModelPersonnelContainer myContainer = new
ModelPersonnelContainer())
{
var selectedRows = from item in myContainer.Staff
select new
{
Name=item.Name,
Email=item.Email
};
GridView1.DataSource = selectedRows.ToList();
GridView1.DataBind();
}
答案 0 :(得分:1)
这部分代码创建了一个匿名类:
new
{
Name=item.Name,
Email=item.Email
}
您应该明确地命名,然后使用该类名,并且您可以键入您的返回类型:
new Staff()
{
Name=item.Name,
Email=item.Email
}
此外,您可能希望使用ToList()
,或将返回类型更改为IEnumerable<Staff>
,因为LINQ查询不会返回List<Staff>
:
var selectedRows = ...
.ToList();