Extracting a list of objects from a repository as JSON
Anonymous types are going to be your friend here.  You don't need to have list or dictionary at all.   

First you don't need to call ToList() from your repository.

Now we can just project out the properties you want like so

wards.Select(w =&gt; new
{
     ward_id = w.ward_id.ToString(),
     w.ward_name
})


JsonConvert will serialize an IEnumerable as an array.  this will get your square bracket around the "Wards" and have the two properties you would like and having the Id converted to a string. 

Now you just need the "data" object to contain the IEnumerable.  Again making an anonymous type.

var data = new
{
    data = wards.Select(w =&gt; new
    {
        ward_id = w.ward_id.ToString(),
        w.ward_name
    })
};

var json = JsonConvert.SerializeObject(data);


That's it.  That should get you what you want.