【问题标题】:can not convert the class to System.Linq.IQueryable using .net core无法使用 .net 核心将类转换为 System.Linq.IQueryable
【发布时间】:2020-09-01 11:33:40
【问题描述】:

我在这里上课:

  public class AccessinfoDetails 
{
    public IEnumerable<TurbineDvce> Devices { get; set; }
    public TixiModem TixiModem { get; set; }
}

我有一个这样定义的接口:

  public IQueryable<AccessinfoDetails> Devices(string id);

接口的实现:

    public IQueryable<AccessinfoDetails> Devices(string id){

      AccessinfoDetails result = new AccessinfoDetails()
        {
            Devices = distinct,
            TixiModem = tixiModem
        };

        return  result;}

但我收到一条错误消息,说它无法将 AcessInfoDeatils 转换为 system.linq.iquerable 这是正确的,但我该如何解决它?这是将数据传递给我的 API 控制器的正确方法吗?

【问题讨论】:

  • 你的界面定义了,简单地说,一个盒子。你正在返回 something - 没有盒子..
  • @FranzGleichmann 有什么解决办法?
  • 返回 IQueryable&lt;AccessinfoDetails&gt; 而不是 AccessinfoDetails,或将返回类型更改为 AccessinfoDetails。欲了解更多信息,请参阅:What instantiate-able types implementing IQueryable<T> are available in .Net 4.0?
  • @ilmagnifico -- 也许你想返回一个包含一个元素的数组?
  • return new List&lt;AccessinfoDetails&gt; { result }.AsQueryable();

标签: c# asp.net-core


【解决方案1】:

方法的返回类型是IQueryable &lt;AccessinfoDetails&gt;,是一个数据集合,但是方法中的“结果”是AccessinfoDetails类型的单个数据。不清楚你的场景。

如果你不想改变方法的返回类型,你应该改变方法,如图:

 public IQueryable<AccessinfoDetails> Devices(string id)
    {
        List<AccessinfoDetails> list = new List<AccessinfoDetails>()
        {
            new AccessinfoDetails
            {
                Devices = distinct,
                ixiModem = tixiModem
            }
        };

        return list.AsQueryable();
    }

【讨论】:

    【解决方案2】:

    这应该可行,将您的返回行更改为如下所示:

    return  new [] {result}.AsQuerable();
    

    或者正如 Rufus L 在 cmets 中指出的那样,一个使用列表而不是数组的类型化版本:

    return new List<AccessinfoDetails> { result }.AsQueryable();
    

    【讨论】:

    • “AccessinfoDetails”不包含“AsQuerable”的定义,并且找不到接受“AccessinfoDetails”类型的第一个参数的可访问扩展方法“AsQuerable”(您是否缺少 using 指令或程序集参考?)
    • 你是否将 using linq 添加到文件 @ilmagnifico
    • 第二种方法有效,但看起来很难看,我不知道这样做的正确方法是什么
    • @ilmagnifico 我的方法也可以,只要确保你有{ }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多