返回JsonResult我自己的对象

时间:2018-08-02 19:43:54

标签: c# json asp.net-core-mvc

我在ASP .net core mvc中得到了这个简单的示例。它响应jquery的自动完成功能,因此我得到了一个项目列表(如您所见,它向客户端发送了JSon)

public JsonResult Autocomplete(string term)
{
    var items = new[] { "Apple", "Pear", "Banana", "Pineapple", "Peach" };

    var filteredItems = items.Where(item => item.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0);

    return Json(filteredItems);//, JsonRequestBehavior.AllowGet);
}

效果很好。我向客户返回了一个字符串列表。但我希望它发送我自己的对象的字段:


 List<PrvCategory> oCategoriesList;

    //here I load the list with custom code. then....

    var filteredItems = oCategoriesList.Where(item => item.FullName.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0);

    return Json(filteredItems);

所以我得到了PrvCategory的列表。我想像工作的示例一样返回一个字符串列表,并取其中的一个成员说:

public class PrvCategory
{
    public int CategoryId { get; set; }
    public String FullName { get; set; }
}

所以:在我退还JSon之前,

var items = new[] { "Apple", "Pear", "Banana", "Pineapple", "Peach" };

我现在要返回集合中所有对象的全名。

我知道它一定很简单...但是我找不到解决方法。 谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用linq选择PrvCategory的单个属性:

List<PrvCategory> oCategoriesList;

var filteredItems = oCategoriesList
.Where(item => item.FullName.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0)
.Select(i => i.FullName);

return Json(filteredItems);

答案 1 :(得分:0)

  

如果您具有数据库中所有对象的列表,并且只想发送选定的属性以Json的身份查看。可以使用以下方法完成:

var filteredItems = items.Where(item => item.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0);

return Json(filteredItems.Select(x => new
            {
                fullName = x.FullName,              
            }));
  

整个功能应如下所示:

public JsonResult Autocomplete(string term){

var items = new[] { "Apple", "Pear", "Banana", "Pineapple", "Peach" };

var filteredItems = items.Where(item => item.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0);

return Json(filteredItems.Select(x => new
            {
                fullName = x.FullName, 

            })); //, JsonRequestBehavior.AllowGet); }