IEnumerable .Add??
-
Hallo,
ich stehe gerade sehr auf dem Schlauch ...
Wie im Code unten dargestellt, möchte ich ein IEnumerable mit Daten befüllen und diese dann ausgeben.
Problem ist nur, dass immer nur der letzte Datensatz angezeigt wird.Wie kann ich daher meine einzelnen Einträge, die ich durch foreach erhalte, anfügen und ausgeben lassen?
Zweites Problem wäre noch folgendes:
Ein Wert aus der Tabelle tblCar (PurchasePrice) soll mit einem Wert aus der Liste die ich übergebe verglichen werden (ActualValue).
Wie kann ich diese if-Bedingung einbauen? Bzw. ist das innerhalb dieser Abfrage überhaupt möglich?
(Wenn der ActualValue nur noch 25% beträgt, soll das Feld "Sell" = true sein.Danke schon im Voraus!
public static IEnumerable<Car> GetAllCarData(IEnumerable<Car> lCar) { try { using (eDB ctx = new eDB()) { IEnumerable<Car> query = Enumerable.Empty<Car>(); foreach (Car c in lCar) { query = from i in ctx.tblcar where i.CarId == c.cId select new Car { CarId = i.CarId, CarType = i.Type, ActualValue = c.ActualValue //Sell = .... }; } return query.ToList(); } }
-
Der Grund warum deine Schleife immer nur ein Ergebnis zurückliefert, liegt an folgendem Code:
query = from i in ctx.tblcar where i.CarId == c.cId select new Car { CarId = i.CarId, CarType = i.Type, ActualValue = c.ActualValue //Sell = .... };
Du weist deinem Rückgabewert in jedem Durchlauf ein neues Ergebnis zu. Statt IEnumerable<Car> solltest du eine richtige List<Car> verwenden. Dann kannst du auch Add() nutzen.
-
Wenn ich query anstatt IEnumerable als List definiere, dann erhalte ich immer folgende Fehlermeldeung:
*
Der Typ "System.Linq.IQueryable<Cars.Classes.Car>" kann nicht implizit in "System.Collections.Generic.List<Cars.Classes.Car>" konvertiert werden.
*
-
public static IEnumerable<Car> GetAllCarData(IEnumerable<Car> lCar) { using (eDB ctx = new eDB()) { var cars = new List<Car>(); foreach (Car c in lCar) { var query = from i in ctx.tblcar where i.CarId == c.cId select new Car { CarId = i.CarId, CarType = i.Type, ActualValue = c.ActualValue //Sell = .... }; cars.AddRange(query); // falls mehrere Element in query sein können // oder cars.Add(query.First()); // falls exakt 1 Element in query existiert (bzw. existieren muß) } return cars; } }
Aber warum gibst du IEnumerable<Car> als Parameter an, anstatt IEnumerable<long> (oder was auch immer Id ist)?
-
DANKE, so klappt es wunderbar!!!