Jump to content
GSForum - Segélyvonal

LINQ to SQL


[OP]Destroy-man
 Share

Recommended Posts

[OP]Destroy-man

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?

Link to comment
Share on other sites

[OP]Destroy-man

Köszi. Első ránézésre jónak tűnik. Este majd kipróbálom.

 

Szerk.:

Működik.

Link to comment
Share on other sites

[OP]Destroy-man

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

Link to comment
Share on other sites

arpsoft
Ezt találtam.
Link to comment
Share on other sites

Pjotr

PredicateBuilder-t kell használni.

Link to comment
Share on other sites

  • 1 month later...
[OP]Destroy-man

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:

IPB kép

 

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:

IPB kép

 

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. ;)

Link to comment
Share on other sites

Pjotr
var query = db.tablas.Where(predicate.Compile());

Link to comment
Share on other sites

[OP]Destroy-man

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.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...