web-dev-qa-db-fra.com

Impossible de convertir implicitement le type 'System.Linq.IQueryable' en 'System.Collections.Generic.IList'

J'ai une méthode:

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;
}

et erreur à l'endroit sélectionné:

Erreur 1 Impossible de convertir implicitement le type 'System.Linq.IQueryable <WcfService1.DzieckoAndOpiekun>' en 'System.Collections.Generic.IList <WcfService1.DzieckoAndOpiekun>'. Il existe une conversion explicite (il vous manque une distribution?)

Une idée comment résoudre mon problème?

28
netmajor

Pour convertir IQuerable ou IEnumerable en une liste, vous pouvez effectuer l'une des opérations suivantes:

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

ou:

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

Vous pouvez remplacer IList<DzieckoAndOpiekun> resultV avec var resultV.

10
fuwaneko

Si vous utilisez une clause where, assurez-vous d'inclure .First() si vous ne voulez pas d'objet IQueryable.

4
kravits88

Essayez ceci ->

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

Vous pouvez utiliser la méthode . ToList () pour convertir le résultat IQueryable renvoyé en IList, comme illustré ci-dessous, après la requête linq.

   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

J'ai résolu mon problème de cette façon dans EF sur la liste des enregistrements de db

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