powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / L2sql добавить OR
17 сообщений из 17, страница 1 из 1
L2sql добавить OR
    #38014734
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
допустим есть какой-то уже готовый Ienumerable, который ждёт выполнения на сервере.
назовём его data
и есть к нему ещё пара проверок.
Код: c#
1.
2.
3.
4.
5.
if (this.fmname != null) if (fmname.Trim().Length != 0)
                    data = data.Where(x => SqlMethods.Like(x.o.FmOwn, String.Format("{0}%", fmname)));

if (this.Street != null) if (this.Street.Trim().Length > 0)
            data = data.Where(x => SqlMethods.Like(x.s.Name, String.Format("%{0}%", this.Street.Trim())));


вроде всё ничего, но в профайлере sqla видно, что если выполняются обе проверки - между ними стоит AND . Я хотел бы OR .
На этом этапе это можно исправить?
---------------------------------------------------------
SET @@verSION = 'Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 6.0 (Build 6002: Service Pack 2) '
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38014860
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_Kartmann,

я для аналогичной задачи использовал библиотеку LinqKit, там динамически строишь выражения.
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38014863
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
if (this.fmname != null) if (fmname.Trim().Length != 0)
                    data = data.Where(x => SqlMethods.Like(x.o.FmOwn, String.Format("{0}%", fmname))
 || 
 SqlMethods.Like(x.s.Name, String.Format("%{0}%", this.Street.Trim())));



блин вот так OR ставится.
просто в дальнейшем
Код: c#
1.
2.
if (this.fmname != null) if (fmname.Trim().Length != 0)
                    data = data.Where(x => SqlMethods.Like(x.o.FmOwn, String.Format("{0}%", fmname)));


таких вот проверок может быть множество, и я не могу их лепить все в один Where
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38014866
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanErik_Kartmann,

я для аналогичной задачи использовал библиотеку LinqKit, там динамически строишь выражения.
та поздно уже( у меня вся бизнес логика на l2sql, а распыляться не хочется.
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38014871
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_Kartmann,

ну и? библиотека просто успростит вам жизнь). она как для Linq2Sql, так и для EF
http://www.albahari.com/nutshell/linqkit.aspx
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38014875
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скока денег?
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38014878
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
халявная что ли? :)
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38014879
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А стандартными средствами как-то можно решить?
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38014895
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_Kartmann,

да, можно. Бибилиотека же просто удобная надстройка. Копайте в динамический Expressione, я лично не сразу въехал полностью
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38014919
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можете показать пример, как выглядит решение через линкюКит ?
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38014941
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_Kartmann,

не могу найти, ключевое слово PredicateBuilder
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38015354
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivan Копайте в динамический Expressione, я лично не сразу въехал полностью
а он есть в 3.5 ?
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38015523
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            List<int> listint = new List<int>();
            listint.AddRange(new int[] {1,2,3,4,5,6});

            var predicate = PredicateBuilder.True<int>();
            predicate.And(x => x.Equals(2));
            predicate.Or(x => x == 3);


            var q = listint.Where(predicate.Expand().Compile());
            var q1 = q.ToList();


создал тестовый пример, как с сайта. что-то не работает.
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38015529
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде разобрался.
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38015538
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
            List<int> listint = new List<int>();
            listint.AddRange(new int[] {1,2,3,4,5,6,7,8,9,10});

            var predicate = PredicateBuilder.True<int>();
            predicate = predicate.And( r2 => (new int[] { 4, 5, 6 }).Contains(r2));
            predicate = predicate.And(x=>x == 5);

            predicate = predicate.Or(x => x == 3);


            var q = listint.Where(predicate.Compile());
            var q1 = q.ToList();


так
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38015617
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и последний вопрос.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
            List<int> listint = new List<int>();
            listint.AddRange(new int[] {1,2,3,4,5,6,7,8,9,10});


            var list = listint.Select(x => new { x, incx = x+1});

            
            var predicate = PredicateBuilder.True<???>();


спределённо класс нужно создавать для хранения new { x, incx = x+1} ????
...
Рейтинг: 0 / 0
L2sql добавить OR
    #38019292
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а для orderby что-нибудь придумано ?
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / L2sql добавить OR
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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