Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.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# 如何使用Lambda或Linq将匿名类型强制转换为基元类型成员_C#_Linq_Lambda - Fatal编程技术网

C# 如何使用Lambda或Linq将匿名类型强制转换为基元类型成员

C# 如何使用Lambda或Linq将匿名类型强制转换为基元类型成员,c#,linq,lambda,C#,Linq,Lambda,您好,我正在尝试使用Lambda表达式将匿名类型列表转换为原始类型列表,到目前为止我没有运气 我知道我可以使用foreach循环通过'a'并获取值,但我想知道如何在Lambda或Linq中实现 var a = new []{ new {name= "jerry", age = 32}, new {name="peter",age=23}}; List<string> b = a.Select(p => new System.String{p.name}).ToList();

您好,我正在尝试使用Lambda表达式将匿名类型列表转换为原始类型列表,到目前为止我没有运气

我知道我可以使用foreach循环通过'a'并获取值,但我想知道如何在Lambda或Linq中实现

var a = new []{ new {name= "jerry", age = 32}, new {name="peter",age=23}};

List<string> b = a.Select(p => new System.String{p.name}).ToList();
List<int> c = a.Select(p => new System.Int32{p.age}).ToList();
var a=new[]{new{name=“jerry”,age=32},new{name=“peter”,age=23};
List b=a.Select(p=>newsystem.String{p.name}).ToList();
List c=a.Select(p=>newsystem.Int32{p.age}).ToList();
var a=new[]{new{name=“jerry”,age=32},new{name=“peter”,age=23};
List b=a.Select(p=>p.name).ToList();
List c=a.Select(p=>p.age).ToList();
var a=new[]{new{name=“jerry”,age=32},new{name=“peter”,age=23};
List b=a.Select(p=>p.name).ToList();
List c=a.Select(p=>p.age).ToList();
var a=new[]{new{name=“jerry”,age=32},new{name=“peter”,age=23};
List b=a.Select(p=>p.name).ToList();
List c=a.Select(p=>p.age).ToList();
问题在于您在
newsystem.String{p.name}
中使用了{and}。这不是实例化类型的有效方法。

var a=new[]{new{name=“jerry”,age=32},new{name=“peter”,age=23};
List b=a.Select(p=>p.name).ToList();
List c=a.Select(p=>p.age).ToList();

问题在于您在
newsystem.String{p.name}
中使用了{and}。这不是实例化类型的有效方法。

为什么要尝试通过调用构造函数来实例化新实例

这:

var a=new[]{new{name=“jerry”,age=32},new{name=“peter”,age=23};
List b=a.Select(p=>p.name}).ToList();
List c=a.Select(p=>p.age).ToList();
很好。p、 年龄是一个整数,因此是一个值类型。这意味着它是按值复制的,所以在列表c中确实会得到一个唯一的副本。p、 名称是一个字符串。在.NET中,字符串是不可变的,因此共享字符串实例非常方便

还要注意的是,这两个构造甚至都不存在!
另一个注意事项是,在调用构造函数时,需要使用()而不是{}

为什么要尝试通过调用构造函数实例化新实例

这:

var a=new[]{new{name=“jerry”,age=32},new{name=“peter”,age=23};
List b=a.Select(p=>p.name}).ToList();
List c=a.Select(p=>p.age).ToList();
很好。p、 年龄是一个整数,因此是一个值类型。这意味着它是按值复制的,所以在列表c中确实会得到一个唯一的副本。p、 名称是一个字符串。在.NET中,字符串是不可变的,因此共享字符串实例非常方便

还要注意的是,这两个构造甚至都不存在!
另一个注意事项是,在调用构造函数时,需要使用()而不是{}

我认为我们总是需要将其强制转换为对象。谢谢你们的回答。我想我们总是需要把它投射到一个物体上。谢谢你们的回答。
var a = new[] { new { name = "jerry", age = 32 },new {name = "peter", age = 23}};

List<string> b = a.Select(p => p.name).ToList();
List<int> c = a.Select(p => p.age).ToList();
        var a = new[] { new { name = "jerry", age = 32 }, new { name = "peter", age = 23 } };

        List<string> b = a.Select(p => p.name).ToList();
        List<int> c = a.Select(p => p.age).ToList(); 
var a = new []{ new {name= "jerry", age = 32}, new {name="peter",age=23}}; 

List<string> b = a.Select(p => p.name}).ToList(); 
List<int> c = a.Select(p => p.age).ToList();