一个关于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型里面的各个属性的值呢?
展开
 我来答
百度网友07187306e
2011-06-13 · TA获得超过464个赞
知道小有建树答主
回答量:681
采纳率:0%
帮助的人:0
展开全部
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. 这个方案利用了编译器把所有签名相同的匿名类型看作同一类型的功能. 虽然丑了点, 但是能用.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式