Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SortedList出现错误:“quot;不包含Select的定义;_C#_Linq - Fatal编程技术网

C# SortedList出现错误:“quot;不包含Select的定义;

C# SortedList出现错误:“quot;不包含Select的定义;,c#,linq,C#,Linq,以下建议使用此语法: var result = SortedList.Select(x => new { x.Value.MyProperty, x.Value.AnotherProperty }); 但是,当我尝试测试它时,我收到错误: System.Collections.SortedList不包含Select的定义 我有以下参考资料: using System; using System.Collections; using System.Collection

以下建议使用此语法:

var result = SortedList.Select(x => new { 
    x.Value.MyProperty, 
    x.Value.AnotherProperty 
});
但是,当我尝试测试它时,我收到错误:

System.Collections.SortedList
不包含
Select
的定义

我有以下参考资料:

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using System.IO;
尽管进行了广泛的互联网搜索,我还是不知道如何解决这个问题。有人能帮忙吗

编辑: 也许我做得不对。我的目标是将SortedList的子集作为SortedList返回

var subset = data.Where(x => x.Key >= startDate && x.Key <= endDate); 

var子集=数据。其中(x=>x.Key>=startDate和&x.KeyLINQ Select方法接收IEnumerable。但是SortedList没有实现这个接口。

LINQ Select方法接收IEnumerable。但是SortedList没有实现这个接口。

看起来像是将SortedList用作一个静态类,或者您的对象与c命名相同姑娘,不管怎样,这应该行得通:

var myList = new SortedList<int, int>();
var mySelect = myList.Select(x => x.Value);
var myList=new SortedList();
var mySelect=myList.Select(x=>x.Value);

看起来您正在将SortedList用作静态类,或者您的对象与该类的名称相同。无论如何,这应该可以:

var myList = new SortedList<int, int>();
var mySelect = myList.Select(x => x.Value);
var myList=new SortedList();
var mySelect=myList.Select(x=>x.Value);
注意:您最近编辑了您的问题,陈述了真正的问题,这可能会使此答案过时。我发布了一个新的答案来解决“真正”的问题


  • 确保您的项目引用了
    System.Core.dll
    。这是一个.NET程序集,它包含了LINQ对几乎任何集合类型的扩展方法

    (这包括
    Select
    ,您无法使用
    SortedList
    找到它
    Select
    实际上是在static类中找到的一个静态方法。)

  • 使用
  • 指令确保您至少有以下两个指令(您已经有了):

  • 由于
    SortedList
    是一个非泛型和非类型的集合,即它只包含
    对象
    s,为了使用LINQ的
    选择
    方法和/或访问元素的
    属性,您首先需要调用LINQ的
    强制转换
    操作符

    var result = sortedList.Cast<TItem>().Select(x => new { 
        x.Value.MyProperty, 
        x.Value.AnotherProperty 
    });
    
    var result=sortedList.Cast().Select(x=>new{
    x、 Value.MyProperty,
    x、 另一个属性的值
    });
    
    其中
    TItem
    SortedList
    中项目类型的名称

  • p.S.:我假设您的示例中的
    SortedList
    引用了一个局部变量、字段或属性,并且没有用作类型名称。这就是为什么我将大小写更改为
    SortedList

    p.p.S.:除非你有充分的理由不这样做,否则如果你使用这门课,生活可能会轻松一些,这里的一些人在我之前已经建议过了

    注意:您最近编辑了您的问题,陈述了真正的问题,这可能会使此答案过时。我发布了一个新的答案来解决“真正”的问题


  • 确保您的项目引用了
    System.Core.dll
    。这是一个.NET程序集,它包含了LINQ对几乎任何集合类型的扩展方法

    (这包括
    Select
    ,您无法使用
    SortedList
    找到它
    Select
    实际上是在static类中找到的一个静态方法。)

  • 使用指令确保您至少有以下两个指令(您已经有了):

  • 由于
    SortedList
    是一个非泛型和非类型的集合,即它只包含
    对象
    s,为了使用LINQ的
    选择
    方法和/或访问元素的
    属性,您首先需要调用LINQ的
    强制转换
    操作符

    var result = sortedList.Cast<TItem>().Select(x => new { 
        x.Value.MyProperty, 
        x.Value.AnotherProperty 
    });
    
    var result=sortedList.Cast().Select(x=>new{
    x、 Value.MyProperty,
    x、 另一个属性的值
    });
    
    其中
    TItem
    SortedList
    中项目类型的名称

  • p.S.:我假设您的示例中的
    SortedList
    引用了一个局部变量、字段或属性,并且没有用作类型名称。这就是为什么我将大小写更改为
    SortedList

    p.p.S.:除非你有充分的理由不这样做,否则如果你使用这门课,生活可能会轻松一些,这里的一些人在我之前已经建议过了

    注意:我将此作为一个全新的答案发布,因为最近对您的问题进行的编辑清楚地表明,真正的问题与最初看起来的大不相同

  • 数据
    中选择要在结果
    分类列表中显示的子集

    我看不到更简单的解决方案。问题是
    可枚举。其中
    将返回一个
    IEnumerable
    ,并且没有扩展方法将其转换回
    SortedList
    。因此需要逐项迭代
    IEnumerable
    并将其添加到新的
    SortedList

  • 何时使用
    何处
    以及何时使用
    选择

    • 每当您想要查找子集时,即当您想要“筛选”集合时,请使用
      Where
      。(如果您熟悉SQL,
      Where
      对应于
      Where
      ,因此得名。)

    • 当您想将集合中的每个元素更改/转换或“投影”为其他元素时,请使用
      Select
      。在函数式编程中,此操作通常称为“映射”。(同样,如果您熟悉SQL,则
      Select
      ——毫不奇怪——对应于
      Select

    最后,请记住,您可以编写以下内容,而不是
    数据。其中(x=>x.Key>=…)

     var subset = from x in data 
                  where x.Key >= … 
                  select x
    
    这是真的
    var sortedListSubset = new SortedList<DateTime, BarData>();
    
    foreach (var subsetItem in subset)
    {
        sortedListSubset.Add(subsetItem.Key, subsetItem.Value);
    }
    
     var subset = from x in data 
                  where x.Key >= … 
                  select x