System.Collections.Generic.IEnumerator'不包含“ ToList”的任何定义,即使引用System.Linq

时间:2019-01-17 12:22:03

标签: c# .net

我的代码给出了一个错误。这是错误:

Error CS1061 'IEnumerator' does not contain a definition for 'ToList' and no accessible extension method 'ToList' accepting a first argument of type 'IEnumerator' could be found (are you missing a using directive or an assembly reference?)

但是,我引用的是System.Linq ..:

namespace <hidden>.Configuration
{
    using System;
    using System.Configuration;
    using System.Linq;

    using Microsoft.VisualStudio.TestTools.UnitTesting;

    using <hidden>.Configuration;

    [TestClass]
    public class ConfTest2
    {
        [TestMethod]
        public void TestCorrectConfig()
        {
            var applicationConfiguration = this.loadCorrectConfig;

            var configuration = applicationConfiguration.Configuration;
            var list = configuration.GetEnumerator().ToList();
        }
    }

另外,Resharper告诉我System.Linq是文件中未使用的指令

编辑:我删除了.GetEnumerator()通话。调用configuration.ToList()仍然会给我同样的错误(尽管类型为CustomConfiguration而不是IEnumerableCustomConfiguration类型是System.Configuration.ConfigurationElementCollection的实现)。

以下代码有效(但对我而言,这是一个相当丑陋的解决方法,它正在检查列表是否包含某些元素):

var applicationConfiguration = this.loadCorrectConfig;

var configuration = applicationConfiguration.Configuration;
foreach (var property in filter) { ... }

但是以下代码不起作用

var applicationConfiguration = this.

var configuration = applicationConfiguration.Configuration;
var list = configuration.ToList();

1 个答案:

答案 0 :(得分:2)

var list = configuration.GetEnumerator().ToList();

应该。

var list = configuration.ToList();

GetEnumerator()返回遍历序列的迭代对象,包括内部的foreachToList()的实现。