2010-11-01 85 views
2

我想从一个复杂的对象从数据模型,一个Json,不幸的是,我不想通过所有的层次结构(人 - > HasMany订单/订购HasMany产品等),但仅限“第一级”(例如网格视图的人员名称)。从一个复杂的对象过滤Json从ASP.NET MVC JsonResult

public JsonResult Search(string fMname, string fSname) 
{ 
IList<Person> people = personRepository.FindAllMatchingName(fMname, fSname); 
//Here with lazy loading querying only the “first level” for object 
var data = people; 
return Json(new { items = data }); 
//Here querying full object hierarchy and return the big Json 
} 

我要寻找一个解决方案来过滤JSON对象和 - 如果这是可能的 - 工作的延迟加载,避免SQL开销。

任何想法?

回答

0

创建一个只包含所需属性的简化人员类。然后使用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 }); 
} 

您可以改用匿名类型,但它不会在视图中强类型化。

+0

感谢它的工作! – 2010-11-01 16:00:22