c#字典字符串对象按键获取值
本文关键字:获取 对象 字典 字符串 | 更新日期: 2023-09-27 18:01:42
我正在使用c# asp.net mvc 4,我正在制作一个要发送和显示在test.cshtml的字典我是c#的新手,我有在cshtml页面中转换对象值Dictionary的问题。
这是我的对象类我用viewbag发送它:
Dictionary<string, User> dic = new Dictionary<string, User>();
dic.Add("1", new User { ID_Task = "task1", Agent = "shasapo" });
dic.Add("2", new User { ID_Task = "task2", Agent = "fania" });
dic.Add("3", new User { ID_Task = "task3", Agent = "andre" });
ViewBag.taskDetailVehicle = dic;
,这是我的第一个测试。如何获取值:
@if (ViewBag.taskDetailVehicle.ContainsKey("3"))
{
User test1 = ViewBag.taskDetailVehicle.Where(z => z.Value.ID_Task == "3").FirstOrDefault().Value;
User test2 = ViewBag.taskDetailVehicle.Values.FirstOrDefault(k => k.ID_Task == "3");
}
但是这段代码给了我错误:"不能使用lambda表达式作为动态调度操作的参数,而不首先将其转换为委托或表达式树类型"。
然后我尝试其他方法:
@if (ViewBag.taskDetailVehicle.ContainsKey("3"))
{
User test1 = ViewBag.taskDetailVehicle["3"];
<p>test1.ID_Task <br/> test1.Agent </p>
}
但是它返回null..
请帮我一下,有没有办法通过键来获取值
ViewBag
是dynamic
对象,它在编译时没有特定的类型。您需要将动态对象强制转换为字典:
var dictionary = ViewBag.taskDetailVehicle as Dictionary<string, User>;
:
@if (ViewBag.taskDetailVehicle.ContainsKey("3"))
{
User test1 = dictionary["3"];
}