powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / (c#) Условие в linq
6 сообщений из 6, страница 1 из 1
(c#) Условие в linq
    #38518088
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))
не работает.
...
Рейтинг: 0 / 0
(c#) Условие в linq
    #38518433
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
(c#) Условие в linq
    #38518491
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Вы смешиваете два синтаксиса. Это не обязательно.
Код: c#
1.
2.
3.
4.
..........
//вот сюда и вставляйте
..........
// и так далее.


Хорошее отступление. Потом подумать, как вместо bool MySmartChecking(Product n) использовать Func<Product, bool>, следующим шагом - как Func встроить в linq expression. Так потихоньку и наступит просветление.
...
Рейтинг: 0 / 0
(c#) Условие в linq
    #38518615
Rokstedi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ок, спасибо, из "where" я разобрался а как тогда быть с "orderby"? У меня сортировка тоже зависит от условия orderType.
...
Рейтинг: 0 / 0
(c#) Условие в linq
    #38519595
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
...
Рейтинг: 0 / 0
(c#) Условие в linq
    #38519634
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / (c#) Условие в linq
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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