Avatar
basta74
Člen
Avatar
basta74:

Zdravím, potřeboval bych vytáhnout z DB všechny uživatele začínající prvním písmenem bez rozlišení diakritiky. Čili s písmenem "S" všechny "Svačinové, Šťastné a Štěpánové". V klasickém SQL dotazu mi to nedělá problém ale v LINQu jsem na to nepřišel a ani google nechce poradit (spíš nevím jak se ptát).

 
Odpovědět 29.5.2014 9:01
Avatar
Luboš Běhounek (Satik):

Ahoj, koukni na funkci
http://msdn.microsoft.com/…s131452.aspx
a její druhý parametr
http://msdn.microsoft.com/…parison.aspx

Editováno 29.5.2014 9:20
Nahoru Odpovědět 29.5.2014 9:20
:)
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na basta74
Jan Vargovský:
kolekce.Where(s => s.Prijmeni.StartsWith("s", StringComparison.CurrentCultureIgnoreCase));
Editováno 29.5.2014 21:48
 
Nahoru Odpovědět 29.5.2014 21:47
Avatar
basta74
Člen
Avatar
basta74:

Díky oběma!

Už na základě prvního příspěvku jsem to zkoušel, ale napsalo mi to

An exception of type 'System.NotSup­portedExcepti­on' occurred in EntityFramework.dll but was not handled in user code

Additional information: LINQ to Entities does not recognize the method 'Boolean StartsWith(Sys­tem.String, System.StringCom­parison)' method, and this method cannot be translated into a store expression.

Musel jsem to vyřešit tím že, jsem obešel LINQ a dotazoval se přímo na DB.
Nicméně je to násilné obejítí a LINQ by byl lepší.

Editováno 29.5.2014 22:49
 
Nahoru Odpovědět 29.5.2014 22:48
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na basta74
Jan Vargovský:

Jo, ono jak se to transformuje do SQL, tak to neumí vše. Vím, že to jde nějak obejít, ale už si nepamatuju jak.

 
Nahoru Odpovědět 29.5.2014 22:54
Avatar
Milan Křepelka
Redaktor
Avatar
Milan Křepelka:

Hledal bych cosi, kam můžeš loupnout komparátor a diakritiku vyřešit v něm nebo zkusit takovou věc na kterou si teďka nemůžu vzpomenout jak se dělá implementačne. Můžeš expression tree postavit sám. Jako když se dělají dynamicky skládaný WHERE a pak si udělat nějakou třídu, která ti ten expression tree postaví na základě kombinací prvního písmene a zbytku textu. Vlastně bys v SQL postavil několik málo LIKE za sebou.

 
Nahoru Odpovědět 30.5.2014 0:15
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.