Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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# 使用LINQ在一行代码上键入数组中的每个对象_C#_Linq - Fatal编程技术网

C# 使用LINQ在一行代码上键入数组中的每个对象

C# 使用LINQ在一行代码上键入数组中的每个对象,c#,linq,C#,Linq,假设我有一个用户数组: class User : IUserDowngraded { public Int32 Id { get; set; } } 。。。通过将对象强制转换到特定接口来实现降级功能: interface IUserDowngraded { Int32 Id { get; } // removes set functionality from property } 。。。我如何使用LINQ在一行代码中将那些降级对象(iuser降级)强制转换为User对象?

假设我有一个
用户
数组:

class User : IUserDowngraded
{
    public Int32 Id { get; set; }
}
。。。通过将对象强制转换到特定接口来实现降级功能:

interface IUserDowngraded
{
    Int32 Id { get; } // removes set functionality from property
}
。。。我如何使用LINQ在一行代码中将那些降级对象(
iuser降级
)强制转换为
User
对象?


我想避免的是:

// pseudo-code alert:
IUserDowngraded[] downgradedUsers { IUserDowngraded, IUserDowngraded, ... };

var upgradedUsers = new User[downgradedUsers.Count()];

Int32 i = 0;

foreach (IUserDowngraded du in downgradedUsers)
{
    upgradedUsers[i] = (User)user;

    i++;
}
var upgradedUsers=gradedusers.Cast();
当然,如果您想将升级的dusers升级为一个数组,请将调用附加到
ToArray()

SampleIntList=SampleStringList.Cast().Select(x=>Convert.ToInt32(x)).ToList();

任何一种方法都应该有效。

我想我错过了那种方法。谢谢:)是的,林克有很多很容易错过的好东西。。。这是一个特别有用的方法。:)
var upgradedUsers = downgradedUsers.Cast<User>();
SampleIntList = SampleStringList.Cast<int>().Select(x => Convert.ToInt32(x)).ToList();