有什么方法可以提高效率?
internal Func<enntities, IQueryable<CategoryList>> GetCategoryListWithPostingCount =
CompiledQuery.Compile((entities entities) =>
from c in entities.Categories.Include("Postings_Categories")
where c.ParentCategoryID == null
orderby c.DisplayOrder
select new CategoryList
{
ParentCategoryName = c.CategoryName,
ParentCategoryID = c.CategoryID,
SubCategories = (
from s in entities.Categories
where s.ParentCategoryID == c.CategoryID
select new SubCategoryList
{
PostingCount = s.Postings_Categories.Count,
SubCategoryName = s.CategoryName,
SubCategoryID = s.CategoryID
})
});
答案 0 :(得分:1)
任何改进建议都取决于我们知道的不仅仅是LINQ查询。例如,如果每个类别有很多SubCategoryLists,并且如果Category附加了大量标量数据(大描述文本等),则在单独的数据库往返中提取类别列表可能会更快。但它可能不会。
查看哪些表已加入并添加适当的索引也会产生影响。
但总而言之,我认为这是一个过早优化的案例。代码看起来很干净,我可以告诉你要用它做什么,所以现在就称之为好。如果你发现它在你的程序中是一个慢点,那么就要担心它。
PS - 这个问题被标记为LINQ-to-SQL,但这看起来像LINQ-to-Entities给我......