[OP]Destroy-man Posted December 12, 2011 Posted December 12, 2011 LINQ-ban hogyan tudok lekérdezni egy olyan táblát, ami egy gyerektáblával is rendelkezik? Azaz úgy szeretném lekérdezni az adott táblát, hogy írja hozzá a gyerekeit is. Ha ez egyáltalán megoldható. Vagy itt csináljak dupla lekérdezést, azaz kérdezzem le a szülõt, utána pedig az ID alapján a gyereket?
[OP]Destroy-man Posted December 12, 2011 Author Posted December 12, 2011 Köszi. Első ránézésre jónak tűnik. Este majd kipróbálom. Szerk.: Működik.
[OP]Destroy-man Posted December 20, 2011 Author Posted December 20, 2011 Azt hogyan oldanátok meg LINQ-ban, hogyha van egy weblap, amin van 22 darab checkbox, és eszerint kellene elkészíteni a lekérdezést, a következõképpen: ha true az értéke a checkboxnak, akkor a hozzátartozó mezõt vegye fel a WHERE-hez, és ha már van benne tartalom, akkor vaggyal fûzze össze (||), de ha false értéken áll a chcekbox, akkor ne kerüljön bele a hozzátartozó mezõ. Egy bõvített keresõt szeretnék így készíteni, viszont ilyen szinten én semmit sem találtam hozzá. Megpróbáltam azt is, hogy csinálok egy stringet, amiben a megfelelõ feltételek alapján összefûzöm a feltételt, de a LINQ csak boolt fogad el, ami viszont nekem nem jó. Vagy ezt a problémát nem lehet megoldani LINQ-ban? Egy egyszerûsített példa a problémára: A weblapon a checkboxok állása: ck1 = true ck2 = false ck3 = true akkor a LINQ-ba ez kerüljön: where ck1 == true || ck3 == true
[OP]Destroy-man Posted February 9, 2012 Author Posted February 9, 2012 Sajnos csak most volt időm foglalkozni ezzel a témával. A PedicateBuilder jónak tűnik, de nekem valahogy nem úgy működik, ahogy kellene. :/ Az adatbázisom: A programkód: protected void Button1_Click(object sender, EventArgs e) { var predicate = PredicateBuilder.False<tabla>(); predicate = predicate.Or(p => p.bit1.Equals(true)); predicate = predicate.Or(p => p.bit2.Equals(false)); predicate = predicate.Or(p => p.bit3.Equals(false)); DataClassesDataContext db = new DataClassesDataContext(); var query = db.tablas.Where(predicate); GridView1.DataSource = query; GridView1.DataBind(); } Az eredmény: Ez meg nekem nem jó. Csak a true-kat kéne figyelmbe vennie, a false-okat kihagynia. Szerk.: Meg is van a megoldás! Megvizsgálom, hogy melyik true, és csak azt adom át a predicatenek, a false-okat nem.
Pjotr Posted February 9, 2012 Posted February 9, 2012 var query = db.tablas.Where(predicate.Compile());
[OP]Destroy-man Posted February 9, 2012 Author Posted February 9, 2012 A Compile() nem sokat segít, de ez igen: if (bool1) predicate = predicate.Or(p => p.bit1.Equals(true)); if (bool2) predicate = predicate.Or(p => p.bit2.Equals(true)); if (bool3) predicate = predicate.Or(p => p.bit3.Equals(true)); Ahol a bool1-2-3 értékét a felhasználó kijelöli checkboxból. Így csak azokra keres, amit a felhasználó megjelölt.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now