【问题标题】:Generic list doesn't contains AsQueryable() in .net core通用列表在 .net 核心中不包含 AsQueryable()
【发布时间】:2016-07-29 16:37:21
【问题描述】:

我正在编写我的类库,在提交对 git 的更改后,应用程序停止工作 - 构建以非常奇怪的错误结束:

“IList”不包含“AsQueryable”的定义,并且找不到接受“IList”类型的第一个参数的扩展方法“AsQueryable”(您是否缺少 using 指令或程序集引用?)

using System.Collections.Generic;
using System.Linq;

using Idea7.Entity;
using Idea7.Query;

namespace Idea7.Repository
{
    /// <summary>
    /// Abstract in-memory repository
    /// </summary>
    public abstract class InMemoryRepository<TEntity, TKey> : IRepository<TEntity, TKey>
        where TEntity : class, IEntity<TKey>
    {
        public abstract IList<TEntity> Data { get; }

        public long Count(IQueryObject<TEntity> query)
        {
            return query.Count(Data.AsQueryable());
        }

        public IEnumerable<TEntity> Fetch(IQueryObject<TEntity> query)
        {
            return query.Fetch(Data.AsQueryable());
        }

        public TEntity FetchOne(IQueryObject<TEntity> query)
        {
            return query.FetchOne(Data.AsQueryable());
        }

        public TEntity Find(TKey id)
        {
            return Data.SingleOrDefault(s => s.Id.Equals(id));
        }

        public void Create(TEntity entity)
        {
            Data.Add(entity);
        }

        public void Update(TEntity entity)
        {
            Delete(entity);
            Create(entity);
        }

        public void Delete(TEntity entity)
        {
            Data.Remove(entity);
        }
    }
}

我错过了什么?

这里是 project.json

{
  "version": "1.0.0-*",
  "description": "Idea7.Repository Class Library",
  "authors": [ "Sebastian Bušek" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",

  "frameworks": {
    "dnx451": { },
    "dnx50": { },
    "netcore50": { }
  },

  "dependencies": {
    "Idea7.Entity": "1.0.0-*",
    "Idea7.Query": "1.0.0-*",
    "Idea7.UnitOfWork": "1.0.0-*",
    "Microsoft.CSharp": "4.0.1-beta-23516"
  }
}

【问题讨论】:

  • 是的,你不能调用一个不存在的函数。不能从 IList 调用 AsQueryable。
  • 你试过packagesearch.azurewebsites.net/?q=AsQueryable 吗?它搜索包中的类型和方法,并列出使用它的包。它说System.Linq.Queryable´, version 4.0.1-beta-23509`。尝试添加对它的引用
  • 附带说明,请不要将dnx451dnx50 名称用于类库。对于 ASP.NET Core RC1,您使用 net451 获取完整框架,使用 dotnet5.x (x=0-5) 获取 .NET Core。 dnx451dnx50 仅适用于应用程序(控制台、asp.net webprojects、xunit 测试项目)
  • 感谢您的回复,您的评论有帮助 - 我不确定,如果 MS 中的某个人决定将包裹分成小块,因为今天早上一切正常...
  • 整个 .NET Core 是高度模块化的,因为现在(很快,使用 RC2 和 dotnet-cli)您可以将所有需要的程序集打包到您的应用程序中,因此无需安装运行时不再,每个应用程序都可以并排使用它的特定程序集版本。因此,更新一个应用程序/框架(即 .NET 3.5 到 4.5.2)不会再破坏您的其他应用程序

标签: c# asp.net linq asp.net-core .net-core


【解决方案1】:

你是否在你的 project.json 引用中添加了这个?

"System.Linq.Queryable": "4.0.1-beta-23516"

【讨论】:

    【解决方案2】:

    AsQuerable 是 System.Linq 程序集/命名空间的一部分。

    【讨论】:

    • using System.Linq 在 using 部分。
    • 使用参考可以吗?如果是,您是否尝试过 .ToList().AsQuerable()?
    • 是的;但似乎他们把包裹分成小块。 Tseng 的回应有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 2023-02-03
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多