web-dev-qa-db-ja.com

タイプ「System.Linq.IQueryable」を「System.Collections.Generic.IList」に暗黙的に変換できません

私には方法があります:

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>'に暗黙的に変換できません。明示的な変換が存在します(キャストを見逃していますか?)

どのように私の問題を解決するのですか?

28
netmajor

IQuerableまたはIEnumerableをリストに変換するには、次のいずれかを実行できます。

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

または:

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

IList<DzieckoAndOpiekun> resultVvar resultVに置き換えることができます。

10
fuwaneko

Where句を使用する場合、IQueryableオブジェクトが必要ない場合は、必ず.First()を含めてください。

4
kravits88

これを試してください->

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

。ToList() メソッドを使用して、linqクエリの後に、以下に示すように、返されたIQueryableの結果をIListに変換できます。

   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

DbのレコードのリストでEFでこの方法で問題を解決しました

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