Asp.net mvc 从复杂对象的ASP.NET MVC JsonResult筛选Json

Asp.net mvc 从复杂对象的ASP.NET MVC JsonResult筛选Json,asp.net-mvc,json,jsonresult,Asp.net Mvc,Json,Jsonresult,我试图从数据模型中的一个复杂对象发布Json,不幸的是,我不想传递所有层次结构(person->HasMany Orders/Orders HasMany Products等),而只传递“第一级”(例如网格视图中的人名) publicjsonresult搜索(字符串fMname,字符串fSname) { IList people=personRepository.FindAllMatchingName(fMname,fSname); //在这里,延迟加载只查询对象的“第一级” var数据=人;

我试图从数据模型中的一个复杂对象发布Json,不幸的是,我不想传递所有层次结构(person->HasMany Orders/Orders HasMany Products等),而只传递“第一级”(例如网格视图中的人名)

publicjsonresult搜索(字符串fMname,字符串fSname)
{
IList people=personRepository.FindAllMatchingName(fMname,fSname);
//在这里,延迟加载只查询对象的“第一级”
var数据=人;
返回Json(新的{items=data});
//这里查询完整的对象层次结构并返回大Json
}
我正在寻找一种过滤Json对象的解决方案,如果可能的话,还可以进行延迟加载并避免sql开销


有什么想法吗?

创建一个只包含所需属性的简化person类。然后使用Linq将Person的IList转换为简化类型的列表

public class SimplePerson
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public JsonResult Search(string fMname, string fSname)
{
    IList<Person> people = personRepository.FindAllMatchingName(fMname, fSname);
    var data = people.Select(m => new SimplePerson() { FirstName = m.FirstName, LastName = m.LastName }).ToList();
    return Json(new { items = data });
}
公共类SimplePerson
公共字符串名{get;set;}
公共字符串LastName{get;set;}
}
公共JsonResult搜索(字符串fMname、字符串fSname)
{
IList people=personRepository.FindAllMatchingName(fMname,fSname);
var data=people.Select(m=>newsimpleperson(){FirstName=m.FirstName,LastName=m.LastName}).ToList();
返回Json(新的{items=data});
}

您可以改为使用匿名类型,但它在视图中不是强类型。

创建一个仅包含所需属性的简化person类。然后使用Linq将Person的IList转换为简化类型的列表

public class SimplePerson
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public JsonResult Search(string fMname, string fSname)
{
    IList<Person> people = personRepository.FindAllMatchingName(fMname, fSname);
    var data = people.Select(m => new SimplePerson() { FirstName = m.FirstName, LastName = m.LastName }).ToList();
    return Json(new { items = data });
}
公共类SimplePerson
公共字符串名{get;set;}
公共字符串LastName{get;set;}
}
公共JsonResult搜索(字符串fMname、字符串fSname)
{
IList people=personRepository.FindAllMatchingName(fMname,fSname);
var data=people.Select(m=>newsimpleperson(){FirstName=m.FirstName,LastName=m.LastName}).ToList();
返回Json(新的{items=data});
}
您可以改为使用匿名类型,但它在视图中不是强类型的