Есть ли способ сделать это более эффективным?Он работает быстро, просто хотел бы улучшения, если доступны - PullRequest
1 голос
/ 08 марта 2011

Есть ли способ сделать это более эффективным?

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 Ответ

1 голос
/ 08 марта 2011

Любые предложения по улучшению будут зависеть от того, что мы знаем гораздо больше, чем просто запрос LINQ.Например, если у вас много SubCategoryLists для каждой категории и если к категории прикреплено много скалярных данных (большой текст описания и т. Д.), Может быть быстрее получить список категорий в отдельной базе данных.Но, вероятно, этого не произойдет.

Просмотр таблиц, которые объединяются, и добавление соответствующих индексов также могут изменить ситуацию.

Но в целом я бы сказал, что это такпреждевременной оптимизации.Код выглядит чистым, и я могу сказать, что вы пытаетесь с ним сделать, поэтому покажите это хорошо.Если вы обнаружите, что это медленная точка в вашей программе, тогда беспокойтесь об этом.

PS - Вопрос помечен LINQ-to-SQL, но для меня это выглядит как LINQ-to-Entities ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...