Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / (c#) Условие в linq / 6 сообщений из 6, страница 1 из 1
05.01.2014, 18:48
    #38518088
Rokstedi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(c#) Условие в linq
Здравствуйте. Начинаю изучать asp.net.mvc, не могу разобраться с условием
Есть запрос:
from n in productRepository.Products.Where()
вот сюда надо вставить условие в зависимости от значения SearchType, пробовал так:
from n in productRepository.Products.Where(SearchType == "1" ? v => v.id == SerchValue : v => v.name.Contains(SerchValue))
не работает.
...
Рейтинг: 0 / 0
06.01.2014, 14:25
    #38518433
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(c#) Условие в linq
RokstediЗдравствуйте. Начинаю изучать asp.net.mvc, не могу разобраться с условием
Есть запрос:
from n in productRepository.Products.Where()
вот сюда надо вставить условие в зависимости от значения SearchType, пробовал так:
from n in productRepository.Products.Where(SearchType == "1" ? v => v.id == SerchValue : v => v.name.Contains(SerchValue))
не работает.

Вы смешиваете два синтаксиса. Это не обязательно.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
from n in productRepository.Products
where MySmartChecking(n)
select n;



bool MySmartChecking(Product n)
{

//вот сюда и вставляйте
if (n.SearchType == "1")
{
   return true;
}
// и так далее.
//from n in productRepository.Products.Where(SearchType == "1" ? v => v.id == SerchValue : v => v.name.Contains(SerchValue))  
}
...
Рейтинг: 0 / 0
06.01.2014, 15:43
    #38518491
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(c#) Условие в linq
D129Вы смешиваете два синтаксиса. Это не обязательно.
Код: c#
1.
2.
3.
4.
..........
//вот сюда и вставляйте
..........
// и так далее.


Хорошее отступление. Потом подумать, как вместо bool MySmartChecking(Product n) использовать Func<Product, bool>, следующим шагом - как Func встроить в linq expression. Так потихоньку и наступит просветление.
...
Рейтинг: 0 / 0
06.01.2014, 17:36
    #38518615
Rokstedi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(c#) Условие в linq
ок, спасибо, из "where" я разобрался а как тогда быть с "orderby"? У меня сортировка тоже зависит от условия orderType.
...
Рейтинг: 0 / 0
08.01.2014, 15:55
    #38519595
Rokstedi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(c#) Условие в linq
ок, спасибо, из "where" я разобрался а как тогда быть с "orderby"? У меня сортировка тоже зависит от условия orderType.
Ну вот например если orderType = 1 тогда

Код: c#
1.
2.
from n in productRepository.Products
select n



если orderType = 1 тогда
Код: c#
1.
orderby n.name


иначе
Код: c#
1.
  orderby n.price
...
Рейтинг: 0 / 0
08.01.2014, 16:44
    #38519634
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(c#) Условие в linq
Rokstediок, спасибо, из "where" я разобрался а как тогда быть с "orderby"? У меня сортировка тоже зависит от условия orderType.
Ну вот например если orderType = 1 тогда

Код: c#
1.
2.
from n in productRepository.Products
select n



если orderType = 1 тогда
Код: c#
1.
orderby n.name


иначе
Код: c#
1.
  orderby n.price



Ну так же примерно -

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
from n in productRepository.Products
select n
orderby VerySmartOrder(orderType , n)


object VerySmartOrder(int orderType , Products n)
{
     if (orderType  == 1)
     {
        return n.name;
     }
     return n.price;
}



Хотя можно конечно, и в одну строчку это записать, анонимным делегатом.
Но перед этим желательно понимать, что происходит.
:-)

Я бы написал два разных запроса, каждый со своим способом сортировки.
Вы от попытки все сделать одним куском кода - ничего не выигрываете.

Тем более судя по коду, orderType - это общая для всего запроса переменная - сортировка или по имени или по цене,
значит нечего усложнять простые вещи.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / (c#) Условие в linq / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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