Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LiNQ поиск по тексту / 18 сообщений из 18, страница 1 из 1
20.08.2012, 00:36
    #37922360
RUSYA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
if (this.prpProductName != null) products = products.Where(o => o.Name == this.prpProductName);

o.Name == this.prpProductName
это точное совпадение, как сделать, если найти продукты по части наименования. Т.е. если в o.Name есть подстрока this.prpProductName

Заранее спасибо
...
Рейтинг: 0 / 0
20.08.2012, 09:53
    #37922556
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
...
Рейтинг: 0 / 0
20.08.2012, 10:42
    #37922634
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
...
Рейтинг: 0 / 0
20.08.2012, 12:08
    #37922758
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
МСУ,
Код: c#
1.
2.
3.
4.
5.
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
public bool Contains(string value)
{
    return this.IndexOf(value, StringComparison.Ordinal) >= 0;
}


Это я так, для справки :)
...
Рейтинг: 0 / 0
20.08.2012, 15:27
    #37923147
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
skyANAЭто я так, для справки :)
Так короче же и читабельнее :)
...
Рейтинг: 0 / 0
21.08.2012, 17:15
    #37925072
Anton_juk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
skyANAМСУ,
Это я так, для справки :)

Речь идет о linq, потенциально при разборе Expression разными провайдерами будет генерироваться разный код при использовании IndexOf и Contains
...
Рейтинг: 0 / 0
21.08.2012, 17:25
    #37925086
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
Anton_jukskyANAМСУ,
Это я так, для справки :)

Речь идет о linq, потенциально при разборе Expression разными провайдерами будет генерироваться разный код при использовании IndexOf и ContainsПример привести можете?
...
Рейтинг: 0 / 0
21.08.2012, 17:32
    #37925096
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
Anton_juk, к примеру Contains превратиться в LIKE, а IndexOf в CHARINDEX, Вы об этом?
...
Рейтинг: 0 / 0
21.08.2012, 17:45
    #37925114
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
skyANAAnton_juk, к примеру Contains превратиться в LIKE, а IndexOf в CHARINDEX, Вы об этом?
Это называется трансляция )
...
Рейтинг: 0 / 0
21.08.2012, 18:29
    #37925179
Anton_juk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
skyANAAnton_juk, к примеру Contains превратиться в LIKE, а IndexOf в CHARINDEX, Вы об этом?

Пример оперативно могу привести только для НХибернейта.

Код: c#
1.
from p in session.Query<Product> where p.Name.Contains("bla-bla.bla") select p


работает, а код
Код: c#
1.
from p in session.Query<Product> where p.Name.IndexOf("bla-bla.bla") select p


выкидывает NotSupportedException
...
Рейтинг: 0 / 0
21.08.2012, 18:30
    #37925185
Anton_juk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
Anton_juk,

конечно же
from p in session.Query<Product> where p.Name.IndexOf("bla-bla.bla")>=0 select p
иначе не скомпилится (переделал пример из своего более сложного запроса)
...
Рейтинг: 0 / 0
22.08.2012, 07:32
    #37925533
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
МСУskyANAAnton_juk, к примеру Contains превратиться в LIKE, а IndexOf в CHARINDEX, Вы об этом?
Это называется трансляция )Я в работу с ORM толком ещё не погружался, терминологии не знаю. Зато теперь знаю, что NHibernate не поддерживает IndexOf, а мог бы :)
...
Рейтинг: 0 / 0
22.08.2012, 09:52
    #37925655
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
skyANAЗато теперь знаю, что NHibernate не поддерживает IndexOf, а мог бы :)
Хм. А тут говорят, что поддерживает.
...
Рейтинг: 0 / 0
22.08.2012, 10:58
    #37925810
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
МСУ, выходит Anton_juk нас обманывает? :)
...
Рейтинг: 0 / 0
22.08.2012, 11:26
    #37925884
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
skyANAМСУ, выходит Anton_juk нас обманывает? :)
Возможно, версия у него ниже, хз.
...
Рейтинг: 0 / 0
22.08.2012, 12:58
    #37926120
Anton_juk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
МСУВозможно, версия у него ниже, хз.
Версия свежая. Посмотрел в исходники, IndexOf поддерживается, но не с аргументом StringComparison.Ordinal

Т.е. я немного обманул всех, на самом деле выполнял такой запрос и он выдавал исключение
Код: c#
1.
from p in session.Query<Product> where p.Name.IndexOf("bla-bla.bla", StringComparison.Ordinal) select p



А запрос
Код: c#
1.
from p in session.Query<Product> where p.Name.IndexOf("bla-bla.bla") select p


выполняется. Причем skyANA был прав, он транслируется в SQL charindex
А Contains транслируется в SQL like '%bla-bla-bla%'
...
Рейтинг: 0 / 0
22.08.2012, 14:10
    #37926272
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
Anton_jukПричем skyANA был прав, он транслируется в SQL charindex
А Contains транслируется в SQL like '%bla-bla-bla%'Ну а charindex и like '%bla-bla-bla%' в принципе идентичны в данном случае :)
...
Рейтинг: 0 / 0
02.09.2012, 12:00
    #37940329
VIT2708
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiNQ поиск по тексту
RUSYA,

if (this.prpProductName != null) products = products.Where(o => o.Name .Contains( this.prpProductName ) );
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LiNQ поиск по тексту / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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