代码之家  ›  专栏  ›  技术社区  ›  netmajor

无法将类型“System.Linq.IQueryable”隐式转换为“System.Collections.Generic.IList”

  •  26
  • netmajor  · 技术社区  · 14 年前

    我有个方法:

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

    在所选位置出现错误:

    错误1无法隐式转换类型“System.Linq.IQueryable”<WcfService1.DzieckoAndOpiekun>'到'System.Collections.Generic.IList<WcfService1.DzieckoAndOpiekun>'。存在显式转换(是否缺少强制转换?)

    你知道怎么解决我的问题吗?

    6 回复  |  直到 8 年前
        1
  •  54
  •   Arseni Mourzenko    14 年前

    转换 IQuerable IEnumerable 对于列表,可以执行以下操作之一:

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

    或:

    IQueryable<object> q = ...;
    List<object> l = new List<object>(q);
    
        2
  •  11
  •   fuwaneko    14 年前

    你可以替换 IList<DzieckoAndOpiekun> resultV 具有 var resultV .

        3
  •  6
  •   kravits88 JML    11 年前

    如果使用where子句,请确保包括 .First() 如果您不想要IQueryable对象。

        4
  •  4
  •   Ryk    14 年前

     new DzieckoAndOpiekun(
                             p.Imie,
                             p.Nazwisko,
                             p.Opiekun.Imie,
                             p.Opiekun.Nazwisko).ToList()
    
        5
  •  2
  •   fletcher    14 年前

    你可以用 .ToList()

       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;
    }
    
        6
  •  1
  •   X-Coder    9 年前

    我已经解决了我的问题,在EF上的db记录列表

    ListOfObjectToBeOrder.OrderBy(x => x.columnName).ToList();
    
        7
  •  0
  •   Daniel Danielecki    4 年前

    SonarQube Return an empty collection instead of null. 我对这个问题的题目中的选角错误有意见。 return XYZ.ToList().AsQueryable(); 用一种方法 IQueryable 像这样:

    public IQueryable<SomeType> MethodName (...) {
      IQueryable<SomeType> XYZ;
      ...
      return XYZ.ToList().AsQueryable();
    }
    

    希望对类似情况的人有所帮助。