LINQ之后 能否用[]索引的形式对select new出来的新对象取值

Logerlink 2018-04-13 11:14:03
修改之前的代码 这个是可行的 但是我想简洁一下foreach处的代码

var ds_enum = from dbItem in ds.Tables[0].AsEnumerable()
select new
{
//PID,EBKID,CATEID,TITLE,IMGURL
pageId = dbItem.Field<int>("PID").ToString(),
ebookId = dbItem.Field<int>("EBKID").ToString(),
cateId = dbItem.Field<int>("CATEID").ToString(),
title = dbItem.Field<string>("TITLE")
};
foreach (var item in ds_enum)
{
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("pageId",item.pageId);
dic.Add("ebookId",item.ebookId);
dic.Add("cateId",item.cateId);
dic.Add("title",item.title);
}


修改过后的代码

var ds_enum = from dbItem in ds.Tables[0].AsEnumerable()
select new
{
//PID,EBKID,CATEID,TITLE,IMGURL
pageId = dbItem.Field<int>("PID").ToString(),
ebookId = dbItem.Field<int>("EBKID").ToString(),
cateId = dbItem.Field<int>("CATEID").ToString(),
title = dbItem.Field<string>("TITLE")
};
string[] dic_key = { "pageId", "ebookId", "cateId", "title" };
foreach (var item in ds_enum)
{
Dictionary<string, string> dic = new Dictionary<string, string>();
foreach (string key in dic_key)
{
dic.Add(key,item[key]);
}
}

改成这个后 走不通错误如下 请问有什么方法能用[]访问对象吗??? (虽然我也知道不可能......... )
...全文
834 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Logerlink 2018-04-14
  • 打赏
  • 举报
回复
我还是乖乖手写吧
Logerlink 2018-04-13
  • 打赏
  • 举报
回复
或者有什么方式 更好的遍历Dataset 请各位帅哥指教指教
Logerlink 2018-04-13
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
item是ds_enum集合中的匿名对象,对象不支持[]取值方式,只有继承自Array类或者某些自定义的数据类型才支持。搞清楚类型的使用方式先。
哦哦 我知道了 那有其他方法 可以实现我那个需求吗???因为如果查询字段很多(10+)的话 我就得写很多个dic.add(key,value);
exception92 2018-04-13
  • 打赏
  • 举报
回复
item是ds_enum集合中的匿名对象,对象不支持[]取值方式,只有继承自Array类或者某些自定义的数据类型才支持。搞清楚类型的使用方式先。

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧