2016-05-14 17 views
1

Ich muss einen einzelnen Wert aus meiner Datenbank auswählen.Wählen Sie einen einzelnen Wert von db

MyController.cs

using (var db = new MainDbContext()) 
    { 
     var getPhoto = db.Users.Where(u => u.Name == User.Identity.Name).Select(u => u.Photo); 
     var materializePhoto = getPhoto.ToList(); 
     var photo = materializePhoto[0]; 
    } 

ich dieses Zeug, um meinen Wert von IQueryable-String richtig zu konvertieren.

Ich habe gelesen über die Verwendung von 'FirstOrDefault', 'First', 'Default' wählen Sie Optionen (weil sie einen String-Wert, nicht IQerable zurückgeben), aber ich denke, es ist nicht für meinen Fall geeignet.

Die Frage ist: Wie kann ich meinen Code einfacher und kürzer machen?

S.S .: db.Users.Photo enthält URLs.

+1

'var photo = db.Users.Where (u => u.Name == User.Identity.Name) .Select (u => u.Photo) .FirstOrDefault();' –

+0

Oder Sie könnten schreiben noch kürzer : 'var photo = db.Users.FirstOrDefault (u => u.Name == User.Identity.Name) .Wählen Sie (u => u.Photo);' –

+0

@marc_s, ich habe von eifrigem Laden gehört, etw. wie ich Wählen Sie nicht die ganze Tabelle, sondern die erforderliche Zeile auf einmal. Wie es mit Speicher und Verkehr abnimmt. Ist das wahr? Und kann ich das in meinem Code tun? Wo kann ich darüber ausführlich lesen? –

Antwort

2

Sie benötigen FirstOrDefault, um Ihren Code

var getPhoto = db.Users.Where(u => u.Name == User.Identity.Name).Select(u => u.Photo).FirstOrDefault(); 

und ja hinzuzufügen, wird es funktionieren.

2

Sie mögen diese auch einzelnen Datensatz wählen Sie aus db

var photo = db.Users.Where(u => u.Name == User.Identity.Name).FirstOrDefault().Photo; 

Es wird auch das Rück das erste Foto Wert

1

Bitte benutzen Sie FirstOrDefault() tun könnte.

Verwandte Themen