2010-11-01 89 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