foreach between Ienumerable
本文关键字:Ienumerable between foreach | 更新日期: 2023-09-27 18:28:05
我有一个关于实体的简单问题。我有一个简单的方法,它在数据库中的两个表之间进行简单的内部连接,现在返回的类型是匿名的,我想,如果我像下面这样使用IEnumerable,它可以很好地工作,当我填充datagridview时,它可以工作,但我如何在IEnumeraable和检索我的对象之间移动,因为它们是匿名类型,我们不能使用这个:
foreach(var o in result)
o.Id //did not have a type and is not accessible
????? Testmethod()
{
IEnumerable<object> result;
using (var context = new TestDBEntities())
{
result = (from a in context.Table1
join b in context.Table2
on a.ID equals b.Id
select new { b.Id ,b.name });
}
return ???
}
您不能在方法之间传递匿名类型(当然可以,但不是强类型的,这充其量是一个糟糕的解决方法)。最好的方法是为此定义一个简单的类,您可以在投影中使用:
public class Foo
{
public int Id {get;set;}
public string Name {get;set;}
}
现在您可以在查询中使用Foo
,并返回IEnumerable<Foo>
作为结果:
IEnumerable<Foo> Testmethod()
{
using(var context = new TestDBEntities())
{
var result = (from a in context.Table1
join b in context.Table2
on a.ID equals b.Id
select new Foo() { Id = b.Id , Name = b.name });
return result.ToList();//force materializing results
}
}