我正在研究一个在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'?
答案 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工作正常。