【问题标题】:The type arguments for method cannot be inferred from the usage. Try specifying the type arguments ex - error. Any guidance?无法从用法中推断出方法的类型参数。尝试指定类型参数 ex - 错误。有什么指导吗?
【发布时间】:2011-03-05 12:21:46
【问题描述】:
    /// <summary>
    /// Find all of the Areas that are Parents without children Areas.
    /// </summary>
    /// <returns>IQueryable object full of Areas.</returns>
    public IQueryable FindParentAreas()
    {
        return db.Areas.SelectMany(x => x.ParentAreaID == null);
    }

我想返回作为父区域的区域对象的集合,这意味着它们在 ParentAreaID 字段(在我的数据库中)中具有空值。

似乎我不能将它与 null 进行比较,因为 C# 中的 null 可能意味着 Microsoft SQL Server 中的其他内容。

有什么指导吗?我什至应该使用 SelectMany 吗?

【问题讨论】:

    标签: c# linq-to-sql tsql


    【解决方案1】:

    Enumerable.SelectMany:

    将序列的每个元素投影到 IEnumerable 并将结果序列展平为一个序列。

    Enumerable.Where:

    根据谓词过滤一系列值。

    我想你在找Where:

    public IQueryable<Area> FindParentAreas()
    {
        return db.Areas.Where(x => x.ParentAreaID == null);
    }
    

    【讨论】:

    • 谢谢!但是,我仍然收到错误消息 - “无法推断类型参数。”看来我需要更明确地了解“null”,但我不知道该怎么做。
    • 没关系 - 我按 ctrl+shift+B 进行重建,现在它没有给我任何错误。谢谢!
    【解决方案2】:

    我想你想用 Where:

    return db.Areas.Where(x => x.ParentAreaID == null)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多