一个关于C#3.5新特性中的匿名类型的问题,各位大神帮帮忙!
请看这段代码:publicList<Object>GetGoodsBySql(){StringBuilderstrSql=newStringBuilder();strSq...
请看这段代码:
public List<Object> GetGoodsBySql()
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT name,cate ");
strSql.Append(" FROM Goods,Cate ");
strSql.Append(" where Goods.cateid=Cate.id ");
List<Object> list = new List<Object>();
using (DataTable table = DbHelperSQL.Query(strSql.ToString()).Tables[0])
{
foreach (DataRow row in table.Rows)
{
var mygoods = new { goodsname = (string)row["name"], catename = (string)row["cate"] };
list.Add(mygoods);
}
//再循环读出list中元素的各个属性的值,比如goodsname、catename的值
return list;
}
}
我就是想循环读出list中元素的各个属性的值,比如goodsname、catename的值,但是list已经指定为List<Object>泛型了,也就是说list里面的元素都是Object型了,这个时候怎么取得Object型里面的各个属性的值呢? 展开
public List<Object> GetGoodsBySql()
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT name,cate ");
strSql.Append(" FROM Goods,Cate ");
strSql.Append(" where Goods.cateid=Cate.id ");
List<Object> list = new List<Object>();
using (DataTable table = DbHelperSQL.Query(strSql.ToString()).Tables[0])
{
foreach (DataRow row in table.Rows)
{
var mygoods = new { goodsname = (string)row["name"], catename = (string)row["cate"] };
list.Add(mygoods);
}
//再循环读出list中元素的各个属性的值,比如goodsname、catename的值
return list;
}
}
我就是想循环读出list中元素的各个属性的值,比如goodsname、catename的值,但是list已经指定为List<Object>泛型了,也就是说list里面的元素都是Object型了,这个时候怎么取得Object型里面的各个属性的值呢? 展开
1个回答
展开全部
1. 不用匿名类型. 如果只用一次而且你真的不想单独为这个创建一个class, 用list = new List<Tuple<string, string>>(); 强类型的话后面就可以读出来了.
2. 如果一定要用匿名类型:
.NET 3.5 里面没有dynamic, 编译器不支持auto type inferring. 所以必须用reflection.
3. Jon Skeet提出过一个解决方案, 在: http://msmvps.com/blogs/jon_skeet/archive/2009/01/09/horrible-grotty-hack-returning-an-anonymous-type-instance.aspx. 这个方案利用了编译器把所有签名相同的匿名类型看作同一类型的功能. 虽然丑了点, 但是能用.
2. 如果一定要用匿名类型:
.NET 3.5 里面没有dynamic, 编译器不支持auto type inferring. 所以必须用reflection.
3. Jon Skeet提出过一个解决方案, 在: http://msmvps.com/blogs/jon_skeet/archive/2009/01/09/horrible-grotty-hack-returning-an-anonymous-type-instance.aspx. 这个方案利用了编译器把所有签名相同的匿名类型看作同一类型的功能. 虽然丑了点, 但是能用.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询