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();