C# Windows Phone 7 lokale Datenbank Abfragen

yetisports

Lieutenant
Registriert
Juli 2008
Beiträge
747
Hallo,

seit dem Update auf Mango ist es ja auch möglich eine integrierte lokale Datenbank zu nutzen.

Ich habe momentan eine Klasse User als
definiert und ein paar strings als [Column].
Eine weitere Klasse UserDB, die letztendlich die Datenbank enthält, arbeitet mit Table<User> users. Eine Instanz davon habe ich ActiveDB genannt.
Das Einfügen neuer Einträge erfolgt ja mit c#-Syntax, sprich mit ActiveDB.users.InsertOnSubmit(new User()) und ActiveDB.SubmitChanges().

Kann man entsprechend auch Abfragen OHNE SQL-Syntax machen?

Bisher habe ich bspw. solche Abfragen implementiert:
Code:
var selectedUser = from User user
                                   in ActiveDB.Users
                                   where user.UserID == listBoxDB.SelectedIndex + 1
                                   select user;
                User activeUser = selectedUser.First();

Mit dem Befehlen in ActiveDB.Users kann ich auch nach Stunden noch nichts anfangen. Bin schon froh dass ich das .First() gefunden habe.

Wie würde denn gerade ein solcher SQL-Befehl in C#-Syntax lauten?

Hinweis: Ich benutze das Windows Phone 7.1 SDK.

Viele Grüße
yetisports
Ergänzung ()

Da rennt man stundenlang wie gegen eine Wand und dann kommt man auf die Idee ne foreach-Schleife zu benutzen. Programmieren kann manchmal zum verzweifeln einfach sein :evillol:.
 
AW: [C#] Windows Phone 7 lokale Datenbank Abfragen

Was du da siehst ist LINQ (Language-Integrated Query), eine in C# integrierte Abfragesprache.
Der Vorteil (gegenüber z. B. ein foreach-Schleife) ist, dass diese Ausdrücke automatisch in SQL übersetzt werden und so nicht immer alle Datensätze geladen werden müssen.

Es gibt noch eine alternative Syntax für deine Abfrage:
Code:
User activeUser = ActiveDB.Users
                  .Where(user => user.UserID == listBoxDB.SelectedIndex + 1)
                  .Select(user => user) // Könnte man hier auch weglassen
                  .First()

Und falls es dich interessiert: Dieses "=>" gehört zu so genannten Lambda Expressions, die (im Hintergrund) auch in deiner Version der Abfrage verwendet werden.

LINQ ist ein mächtiges aber tolles Werkzeug. Das zu lernen lohnt sich wirklich. Unter dem ersten Link gibts auch viele Beispiele.
 
Zurück
Oben