Diskuze: EntityFramework třídění z pole

C# .NET .NET (C# a Visual Basic) EntityFramework třídění z pole American English version English version

Avatar
Majkel
Člen
Avatar
Majkel:

Ahoj, je možné použít pro výběr dat z databáze za použití EntityFrameworku, pole dat?

Konfigurační soubor:

<add key="Vlastnosti" value="maly, placaty, stredni" />

Kód:

// Nejprve si načtu string z configu a vytvořím nové pole

string vlastnosti = ConfigurationManager.AppSettings["Vlastnosti"];
string[] vlastnostiPole = vlastnosti.Split(',');

DatabaseContext db = new DatabaseContext();

var dbSelect = from s in db.Description
               select s;

dbSelect = // A tady nevím, jak dál.
 
Odpovědět 1.6.2015 11:46
Avatar
Odpovídá na Majkel
Ľubomír Prokopovič:

Skus pouzit List s tym sa lepsie pracuje

Editováno 12.6.2015 22:25
Nahoru Odpovědět 12.6.2015 22:24
"Počítače jsou jako Bůh ve Starém zákoně - hodně příkazů a žádné slitování." Joseph Campbell
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Majkel
Jan Vargovský:

Můžeš upřesnit o co se snažíš?

 
Nahoru Odpovědět 12.6.2015 22:30
Avatar
Majkel
Člen
Avatar
Odpovídá na Jan Vargovský
Majkel:

Mám instanci nějaké databáze:

DatabaseContext db = new DatabaseContext();

Teď budu chtít udělat třeba takovýto výběr:

var dbSelect = from s in db.Description
               select s;

dbSelect = dbSelect.Where(o => o.Sloupec.Contains("maly") || o.Sloupec.Contains("placaty") || o.Sloupec.Contains("stredni");

Takže vyberu hodnoty, které obsahují řetězce "maly" nebo "placaty" nebo "stredni". Takto se ale předpokládá, že vím, jaký počet řetězců mám na výběr. V případě, že dám uživateli možnost si řetězce zadat, jakým způsobem pak mám sestavit dotaz na databázi, když nemůžu použít zápis jako jsem uvedl výše a nevím, kolik řetězců uživatel zadá?

Editováno 14.6.2015 12:15
 
Nahoru Odpovědět 14.6.2015 12:14
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Majkel
Jan Vargovský:
dbSelect.Where(o => new string[] {"maly", "velky", "stredni"}.Any(s => o.Sloupec.Contains(s));

Jestli to budeš nějak používat na více místech, asi bych si k tomu dopsal extension metodu na ContainsAny nebo tak něco :)

Editováno 14.6.2015 12:40
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 14.6.2015 12:40
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 5 zpráv z 5.