wake-up-neo.com

Typ 'System.Linq.IQueryable' kann nicht implizit in 'System.Collections.Generic.IList' konvertiert werden

Ich habe eine Methode:

public DzieckoAndOpiekunCollection GetChildAndOpiekunByFirstnameLastname(string firstname, string lastname)
{
    DataTransfer.ChargeInSchoolEntities db = new DataTransfer.ChargeInSchoolEntities();
    DzieckoAndOpiekunCollection result = new DzieckoAndOpiekunCollection();
    if (firstname == null && lastname != null)
    {
        IList<DzieckoAndOpiekun> resultV = from p in db.Dziecko
                      where lastname == p.Nazwisko
                      **select** new DzieckoAndOpiekun(
                     p.Imie,
                     p.Nazwisko,
                     p.Opiekun.Imie,
                     p.Opiekun.Nazwisko)
                  ;
        result.AddRange(resultV);
    }
    return result;
}

und Fehler an ausgewählter Stelle:

Fehler 1 Der Typ "System.Linq.IQueryable <WcfService1.DzieckoAndOpiekun>" kann nicht implizit in "System.Collections.Generic.IList <WcfService1.DzieckoAndOpiekun>" konvertiert werden. Es liegt eine explizite Konvertierung vor (Fehlt Ihnen eine Besetzung?)

Irgendeine Idee, wie ich mein Problem lösen könnte?

28
netmajor

Um IQuerable oder IEnumerable in eine Liste zu konvertieren, haben Sie folgende Möglichkeiten:

IQueryable<object> q = ...;
List<object> l = q.ToList();

oder:

IQueryable<object> q = ...;
List<object> l = new List<object>(q);
48

Sie können IList<DzieckoAndOpiekun> resultV Durch var resultV Ersetzen.

10
fuwaneko

Wenn Sie eine where-Klausel verwenden, müssen Sie .First() einschließen, wenn Sie kein IQueryable-Objekt möchten.

4
kravits88

Versuchen Sie dies ->

 new DzieckoAndOpiekun(
                         p.Imie,
                         p.Nazwisko,
                         p.Opiekun.Imie,
                         p.Opiekun.Nazwisko).ToList()
3
Ryk

Sie können die . ToList () - Methode verwenden, um das zurückgegebene IQueryable-Ergebnis nach der linq-Abfrage in eine IList zu konvertieren (siehe unten).

   public DzieckoAndOpiekunCollection GetChildAndOpiekunByFirstnameLastname(string firstname, string lastname)
{
    DataTransfer.ChargeInSchoolEntities db = new DataTransfer.ChargeInSchoolEntities();
    DzieckoAndOpiekunCollection result = new DzieckoAndOpiekunCollection();
    if (firstname == null && lastname != null)
    {
        IList<DzieckoAndOpiekun> resultV = from p in db.Dziecko
                      where lastname == p.Nazwisko
                      **select** new DzieckoAndOpiekun(
                     p.Imie,
                     p.Nazwisko,
                     p.Opiekun.Imie,
                     p.Opiekun.Nazwisko).ToList()
                  ;
        result.AddRange(resultV);
    }
    return result;
}
2
fletcher

Ich habe mein Problem auf diese Weise in EF auf der Liste der Datensätze von DB gelöst

ListOfObjectToBeOrder.OrderBy(x => x.columnName).ToList();
1
X-Coder