有什么方法可以提高效率?如果可以的话,它会快速运行

时间:2011-03-08 00:11:48

标签: linq linq-to-sql

有什么方法可以提高效率?

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
                })
            });

1 个答案:

答案 0 :(得分:1)

任何改进建议都取决于我们知道的不仅仅是LINQ查询。例如,如果每个类别有很多SubCategoryLists,并且如果Category附加了大量标量数据(大描述文本等),则在单独的数据库往返中提取类别列表可能会更快。但它可能不会。

查看哪些表已加入并添加适当的索引也会产生影响。

但总而言之,我认为这是一个过早优化的案例。代码看起来很干净,我可以告诉你要用它做什么,所以现在就称之为好。如果你发现它在你的程序中是一个慢点,那么就要担心它。

PS - 这个问题被标记为LINQ-to-SQL,但这看起来像LINQ-to-Entities给我......