powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Нужен совет по Union
4 сообщений из 4, страница 1 из 1
Нужен совет по Union
    #39134583
ughunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется следующее:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
if (count == null)
                count = Config.CountOfActuallyInfoString;

            List<IActuallyInfo> list = new List<IActuallyInfo>();
            if (Repository != null)
            {
                List<Article> aList =
                    Repository.Articles.Where(s => s.Status == RecordStatus.Active)
                    .OrderByDescending(d => (d.Published ?? d.CreationDate))
                        .Take(count.Value)
                        .ToList();

                list.AddRange(aList);

/// Этих кусков очень много
                List<News> nList =
                    Repository.News.Where(s => s.Status == RecordStatus.Active)
                    .OrderByDescending(d => d.Published ?? d.CreationDate)
                        .Take(count.Value)
                        .ToList();
                list.AddRange(nList);



понимаю, что это просто ужос... Вот собственно и вопрос: как от этого избавиться?
...
Рейтинг: 0 / 0
Нужен совет по Union
    #39134879
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну чуда не будет. если тебе надо из 100500 справочников засунуть в 1 лист примерно так и будет.
ты мож эт сделать через n-запросов к бд а можешь 1 запросом.

тут больше вопрос зачем это все в 1 справочник
...
Рейтинг: 0 / 0
Нужен совет по Union
    #39135134
ughunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

консолидированные данные: к вопросу зачем. вот что пришло на ум
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
foreach (ModelIds item in Enum.GetValues(typeof(ModelIds)))
                {
                    var type = item.GetAttributeOfType<ModelTypeAttribute>().ModelType;

                    //ParameterExpression parameter = Expression.Parameter(type, "s");
                    //MemberExpression property = Expression.Property(parameter, "Status");
                    //ConstantExpression rightSide = Expression.Constant(RecordStatus.Active);
                    //BinaryExpression operation = Expression.Equal(property, rightSide);
                    //Type delegateType = typeof (Func<,>).MakeGenericType(type, typeof (bool));
                    //LambdaExpression predicate  = Expression.Lambda(delegateType, operation, parameter);

                    dynamic task = Repository.GetType().GetMethod("GetAll").MakeGenericMethod(type).Invoke(Repository, null);
                    IQueryable<IActuallyInfo> ai = task as IQueryable<IActuallyInfo>;
                    ai = ai?.Where(s => s.Status == RecordStatus.Active)
                        .OrderByDescending(d => (d.Published ?? d.CreationDate))
                        .Take(count.Value);

                    if (ai != null)
                    {
                        var l = ai.ToList();
                    }
                }



осталось сделать запрос с union
...
Рейтинг: 0 / 0
Нужен совет по Union
    #39139433
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ughunter,
сделай в БД вьюшку.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Нужен совет по Union
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]