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..

请帮我一下,有没有办法通过键来获取值

c#字典字符串对象按键获取值

ViewBagdynamic对象,它在编译时没有特定的类型。您需要将动态对象强制转换为字典:

var dictionary = ViewBag.taskDetailVehicle as Dictionary<string, User>;

:

@if (ViewBag.taskDetailVehicle.ContainsKey("3"))
{
    User test1 = dictionary["3"];
}