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

时间:2015-10-28 02:15:15

标签: c# linq generics

我有这个linq查询,它将选择我的表InventoryLocation中的所有记录。但它给了我一个错误...我不知道是什么问题...我真的很新,所以忍受我...

错误

  

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

提前感谢..

 public IEnumerable<InventoryLocationModel> GetInventoryLocations()
    {
        IEnumerable<InventoryLocationModel> results = null;

        using (DataContext ctx = new DataContext())
        {
            results = from a in ctx.InventoryLocations select a;
        }

        return results;
    }

2 个答案:

答案 0 :(得分:2)

主要问题是你实际上并没有执行查询,所以你只剩下IQueryable而不是实际结果,因此你得到了错误。

public IEnumerable<InventoryLocationModel> GetInventoryLocations()
{
    IEnumerable<InventoryLocationModel> results = null;

    using (DataContext ctx = new DataContext())
    {
        results = (from a in ctx.InventoryLocations select a).ToList();
    }

    return results;
}

您还可以简化查询。所有你真正需要的是

public IEnumerable<InventoryLocationModel> GetInventoryLocations()
{
    using (DataContext ctx = new DataContext())
    {
        return ctx.InventoryLocations.ToList();
    }
}

答案 1 :(得分:2)

这将得到你想要的:

results = (from a in ctx.InventoryLocations select a).AsEnumerable();

这可以确保您仍然可以利用LINQ的deferred execution