20 Stimmen

c# LINQ: wie man ein einzelnes Ergebnis abruft

Ich bin neu in Linq,

Was ist der einfachste Weg, um ein einzelnes Ergebnis mit Linq abzurufen?

Beispiel, meine Abfrage

var query =
     from c in db.productInfo
     where c.flavor == "Classic Coke" && c.container == "Can"
     select c.co2Target;

Es sollte nur ein einzelnes Feld mit einem doppelten Wert zurückgegeben werden. Wie ziehe ich es aus der Abfrage heraus? In der Vergangenheit hatte ich ExecuteScalar verwendet. Wie mache ich das mit Linq? Ich würde gerne den Datentyp beibehalten

UPDATE:

So sieht es jetzt aus. Das Problem ist, dass die Testabfrage, die ich hier ausführe, 4 anstelle von 3,75 zurückgibt

var query =
                (from a in db.LUT_ProductInfos
                 where a.flavor == "Classic Coke" && a.Container == "Can"
                 select new { a.co2High }).Single();

            double MyVar = query.co2High.Value;

2voto

Maged Samaan Punkte 1722

Verwenden. SingleOrDefault() wenn Ihre Abfrage immer nur ein Element als Ergebnis liefert oder eine Ausnahme ausgelöst wird, wenn das Ergebnis Ihrer Abfrage mehr als ein Element ist.

(from c in db.productInfo
 where c.flavor == "Classic Coke" && c.container == "Can"
 select c.co2Target).SingleOrDefault();

verwenden. FirstOrDefualt() wenn Ihr Ergebnis mehr als ein Element enthält und Sie eines davon benötigen.

(from c in db.productInfo
 where c.flavor == "Classic Coke" && c.container == "Can"
 select c.co2Target).FirstOrDefault();

2voto

Asif Rehman Punkte 21
string str = (
  from c in db.productInfo 
  where c.flavor == "Classic Coke" && c.container == "Can"
  select c.co2Target)
    .Single().columnName;

-1voto

core_pro Punkte 161

Ich bevorzuge SingleOrDefault(), da es keine Ausnahme auslöst, wenn nichts zurückgegeben wird. MSDN-Referenz

Auf diese Weise können Sie einen Safe-Guard-Zustandscheck für diesen Fall durchführen.

var query = (from c in db.productInfo where c.flavor == "Classic Coke" && c.container == "Can"
                 select c.co2Target).SingleOrDefault();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X