Avanceret søgning med LINQ i C#

Tags:    csharp linq asp.net

Kære udviklere,

Jeg har fået stillet opgaven at bygge et avanceret søgningswebsite hvor jeg har en relations database med en masse data. Jeg skal så dynamisk kunne slå op i tabellerne ud fra brugernes søgekriterier. Eksempelvis at de søger efter en titel hvor deres indtastede streng minder om titlen. De kan slå op efter pris, tilbud mm. vha. checkbox'e. Det er jo i realiteten simpelt nok, men problemet er at jeg gerne vil lave det med LINQ to SQL klassen. Jeg har endnu ikke prøvet at søge efter noget vha. LINQ.

Jeg kunne forestille mig at man tjekkede på hvilke checkbox'e der var selected, og loopede det igennem. Og man så derefter smider en whereClause ind.

Eksempelvis

Fold kodeboks ind/udCSharp kode 


Men er ikke sikker på om det er den mest optimale måde at gøre det på.



5 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Ud fra hvad du synes er nemmest at læse kan du enten stacke flere .Where clauses (du kan også bruge en kun men det bliver hurtigt uoverskueligt) eller gøre det i flere if sætninger. Fx:
Fold kodeboks ind/udCSharp kode 


eller

Fold kodeboks ind/udCSharp kode 


men der er mange måder at gøre det på. Du skal bare gøre det så du ikke sender flere requests til databasen men kun en.

Ekstra ting: if(c.Checked == true) c.Checked er en bool så hvorfor i princippet tjekke om true == true eller false == true. Det er nok at der står if(c.Checked) :)



Indlæg senest redigeret d. 17.01.2013 10:36 af Bruger #15754
Hej, tak for dit svar.

Altså ud fra at jeg kan lave flere whereClause kan jeg jo komprimere det til et loop og tjekke på det. Så kunne jeg evt. bygge et array op med muligheder i c#-delen. Så kunne jeg også smide et ID med op sammen med mine checkbox'e. På den måde kan jeg jo replace id'et med den tilhørende streng.

Fold kodeboks ind/udCSharp kode 


P.S. Vidste godt at det var en bool, og at den automatisk tjekker på true/false i et statement. Skrev det bare for at uddybe mig selv ;).



Det kan du også - der er en hav af måder at gøre det på og der kan du altid lave det også poste igen om der er nogle der har måder at optimere din kode på. Så længe du selv forstår hvad der sker :)



Okay, tak for hjælpen!

Altså, jeg blev rådet til at bruge DynamicLinq :)



Ved at bruge DynamicLinq mister du din fordel ved at dine queries er type stærke.



Indlæg senest redigeret d. 17.01.2013 11:19 af Bruger #15754
t