C# 将匿名类型绑定到中继器

C# 将匿名类型绑定到中继器,c#,asp.net,linq,c#-4.0,asp.net-4.0,C#,Asp.net,Linq,C# 4.0,Asp.net 4.0,我想将一个可枚举匿名类型绑定到一个中继器,如下所示: protected void Page_Load(object sender, EventArgs e) { var obj = myEnumerable.Select(x => new { foo = x.bar, ... }); myRepeater.DataSource = obj; myRepeater.DataBind(); } 如何访问OnItemDataBound中e.Item.DataItem

我想将一个可枚举匿名类型绑定到一个中继器,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    var obj = myEnumerable.Select(x => new { foo = x.bar, ... });

    myRepeater.DataSource = obj;
    myRepeater.DataBind();
}
如何访问
OnItemDataBound
e.Item.DataItem
foo
属性

protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        myFunction(e.Item.DataItem.foo);
    }
}
我不知道该将
e.Item.DataItem
转换为什么,我是否遗漏了什么?这在不创建强类型类的情况下是可能的吗


我无法直接将
myEnumerable
绑定到
myRepeater
,因为我必须首先对其进行操作。

您可以将匿名类型序列绑定到repeater,但如果您需要从另一个方法访问该类型,则是定义适当类的时候了

匿名类型在狭窄的范围内非常有用,因为您不需要类型信息来保持*。在您的情况下,您需要它,所以定义一个类


*从技术上讲,这种类型当然会存在。编译器在幕后生成一个类,并给它一个名称,就您而言,这个名称是无法描述的。但这是在幕后,在幕后,在幕后发生的。内部