i'm using C# asp.net mvc 4 and i'm making a dictionary to be send and displayed at test.cshtml i'm new to c# and i have problem with casting the object value Dictionary in the cshtml page.

here's my object class and i send it using 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;

and here's my first try in test.cshtml how i get the value :

    @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");
    }

But this code is giving me error : "Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type".

Then i try other ways :

@if (ViewBag.taskDetailVehicle.ContainsKey("3"))
    {
      User test1 = ViewBag.taskDetailVehicle["3"];
      <p>test1.ID_Task <br/> test1.Agent </p>
    }

But it's return null..

help me please, is there any way to get the value by key ?

Related posts

Recent Viewed