List不包含'ConvertAll'的定义,也没有扩展方法'ConvertAll'接受类型'List<的第一个参数>”

时间:2017-09-28 12:02:12

标签: c# linq

我正在研究一个在Visual Studio命令上运行的C#项目。它看起来像是:

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

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            var usuarios = new List<Usuario>() {
                new Usuario() { Id = 5, Grupo = "Diretoria", Nome = "Carlos" },
                new Usuario() { Id = 21, Grupo = "Diretoria", Nome = "José" },
                new Usuario() { Id = 3, Grupo = "RH", Nome = "Camila" },
                new Usuario() { Id = 42, Grupo = "RH", Nome = "Joana" },
                new Usuario() { Id = 102, Grupo = "", Nome = "Joaquim" },
                new Usuario() { Id = 7, Grupo = "RH", Nome = "Camila" },
                new Usuario() { Id = 105, Grupo = "Operações", Nome = "Vitor" }
            };

        /* some non-important codes */

            List<Pessoa> pesssoa = usuarios.ConvertAll(x => new Pessoa
            {
                Nome = x.Nome
            });

            Console.ReadKey();
        }
    }

    class Usuario
    {
        public string Nome { get; set; }
        public int Id { get; set; }
        public string Grupo { get; set; }
    }

    public class Pessoa
    {
        public string Nome { get; set; }
    }
}

但是我收到了错误:

  

错误CS1061“List<Usuario>”不包含的定义   'ConvertAll'并没有扩展方法'ConvertAll'接受第一个   可以找到类型为“List<Usuario>”的参数(你错过了吗?   使用指令或程序集引用?)

在“ ConvertAll ”部分。什么可能是错的,因为我在项目中包含'使用System.Linq'?

2 个答案:

答案 0 :(得分:0)

您可以为ConvertAll

创建自己的扩展方法
public static class ListExts {
    public static List<Tnew> ConvertAll<Told, Tnew>(this List<Told> src, Func<Told, Tnew> fconv) {
        var ans = new List<Tnew>(src.Count);
        for (int j1 = 0; j1 < src.Count; ++j1)
            ans.Add(fconv(src[j1]));
        return ans;
    }
}

答案 1 :(得分:0)

找出问题所在。当我在Visual Studio上创建项目时,我选择了

档案 - &gt;新 - &gt;项目 - &gt;已安装 - &gt;模板 - &gt; Visual C# - &gt;控制台应用程序(.NET Core)

问题是选择 Console App(.NET Core)。它似乎没有 Console App(.NET Framework)那么多的功能。在使用Console App(.NET Framework)创建新项目后,ConvertAll工作正常。