C#有没有把Dictionary 转成 new {key = value}

liln0530 2015-09-22 05:31:23
我现在遇到的问题是想把
Dictionary<string, string > dir = new Dictionary<string, string > () {"a", "11"};
想转成
object dir = new {
a = "11"
}
...全文
406 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
liln0530 2015-09-23
  • 打赏
  • 举报
回复
引用 8 楼 wyqlxy 的回复:
Dictionary<string, string> dir = new Dictionary<string, string>() { {"a","11"}}; var objects = (from p in dir select new { a=p.Value }).ToList()[0]; Console.WriteLine(objects.a);
如果dir 里面有很多值,这个new里面写法不和我手动写一样了
  • 打赏
  • 举报
回复
Dictionary<string, string> dir = new Dictionary<string, string>() { {"a","11"}}; var objects = (from p in dir select new { a=p.Value }).ToList()[0]; Console.WriteLine(objects.a);
liln0530 2015-09-23
  • 打赏
  • 举报
回复
引用 6 楼 angel6709 的回复:
需要用dynamic做。
使用github_22161131大哥教的方法么
angel6709 2015-09-23
  • 打赏
  • 举报
回复
需要用dynamic做。
liln0530 2015-09-23
  • 打赏
  • 举报
回复
引用 2 楼 wyqlxy 的回复:
利用linq表达式得到这个对象
怎么使用啊,linq也是遍历这个dir 能否指点一下,或者就我这个例子教我一下
tcmakebest 2015-09-23
  • 打赏
  • 举报
回复
这种new的语法只是偷懒省事的一种方法, 楼主需要的应该不只是这个吧
奋斗的小壁虎 2015-09-23
  • 打赏
  • 举报
回复
dynamic的使用可参照:https://msdn.microsoft.com/zh-cn/library/dd264736.aspx?f=255&MSPPError=-2147217396
winnowc 2015-09-23
  • 打赏
  • 举报
回复
转成匿名对象是不可能的,那个是在编译的时候生成的类,然而这个Dictionary的内容在运行时才能确定(除非自己预先完全清楚里面的键,那可以手写new { a = ... } 创建匿名对象)。所以只能使用dynamic,简单点可以用 ExpandoObject,比如:

var dir = new Dictionary<string, string> { { "a", "11" } };

dynamic ex = new ExpandoObject();
var exDict = (IDictionary<string, object>)ex;
foreach (var p in dir)
	exDict.Add(p.Key, p.Value);

Console.WriteLine(ex.a); // 输出 11
当然这也需要写代码的时候预先知道dir里面有a这个键,如果内容很多,手写匿名对象就不太现实,使用dynamic会更方便的是。如果预先也无法获知,那么就只能直接用Dictionary了。
hwyqy 2015-09-22
  • 打赏
  • 举报
回复
利用linq表达式得到这个对象
  • 打赏
  • 举报
回复
利用linq表达式得到这个对象
  • 打赏
  • 举报
回复
了解下DynamicObject

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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