【问题标题】:IQueryable does not contain a definition for Count or OrderBy .. Can't figure out whyIQueryable 不包含 Count 或 OrderBy 的定义 .. 不知道为什么
【发布时间】:2021-10-28 04:32:02
【问题描述】:

对于 C#、ASP.NET Core 和 Web 开发来说是全新的。我正在尝试实现一个可以与 JQuery DataGrid 一起重用的通用方法。方法如下:

protected String ItemsToJson(IQueryable items, List<String> columnNames, String sort, String order, Int32 limit, Int32 offset)
        {
            try
            {
                Int32 count = items.Count();
                String sortExpression = "";

                if (sort != null && sort.Length > 0)
                    sortExpression += String.Format("{0} {1}", sort, order);

                if (limit == 0)
                    limit = count;

                var result = new
                {
                    total = count,
                    rows = items.OrderBy(sortExpression).Skip(offset).Take(limit).Select("new (" + String.Join(",", columnNames) + ")")
                };

                return JsonConvert.SerializeObject(result, Formatting.None, new JsonSerializerSettings() { MetadataPropertyHandling = MetadataPropertyHandling.Ignore });
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return null;
            }
        }

读取 Int32 count = items.Count(); 的行返回以下错误:

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

读取 rows = Items.OrderBy(sortExpression)..... 的行返回以下错误:

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

我有一个用于 System.Linq 的用途。有什么想法吗?快把我逼疯了!

谢谢大家。

--- 值

【问题讨论】:

  • 我认为您需要向我们提供调用该方法的代码。如果要获取集合的计数,需要将IQueryable物化为某个类IQueryable&lt;T&gt;的集合。
  • 您好,这不是运行时错误。由于这两个错误,我无法编译代码。

标签: asp.net-core datatables


【解决方案1】:

IQueryable items 提供的项目类型是什么?

Count 方法可用于IQueryable&lt;T&gt;,这意味着如果您将传入参数更改为IQueryable&lt;SomeType&gt; items,您应该能够访问它。

https://docs.microsoft.com/en-us/dotnet/api/system.linq.iqueryable-1

IQueryable 接口旨在通过查询实现 提供者。它只应该由提供者实现 也实现IQueryable&lt;T&gt;。如果提供者也没有实现 IQueryable&lt;T&gt;,标准查询运算符不能在 提供者的数据源。

【讨论】:

  • 嗨,亚当。由于这两个错误,代码不会编译。这不是运行时错误。
  • 是的,这就是我所指的。如果您更新方法的参数以引用列出 T 的特定类型的 IQueryable,则可查询方法应该可用:protected String ItemsToJson(IQueryable&lt;TheTypeOfItem&gt; items, ...
  • 知道了!非常感谢亚当。
【解决方案2】:

添加包:

System.Linq.Dynamic.Core

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 2013-11-15
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    相关资源
    最近更新 更多