我正在努力解决以下问题:
我有对象列表和对象类型是int:
int a = 1;
int b = 2;
int c = 3;
List<object> kk = new List<object>( );
kk.Add( ( object )a );
kk.Add( ( object )b );
kk.Add( ( object )c );
我希望将List<object>
强制转换为List<objecttype>
,在上面的示例中,对象类型为int。我想将List<object>
投射到List<int>
。有没有办法解决这个问题?
我正在寻找通用解决方案,并且不了解铸造类型。
答案 0 :(得分:6)
使用linq
的两种方法如果任何对象不是int
,则会抛出此版本。
var ints = kk.Cast<int>().ToList();
此版本只会保留可以投射到int
的那些。
var ints = kk.OfType<int>().ToList();
答案 1 :(得分:1)
也许你可以尝试这样的事情:
List<object> objects = new List<object>();
List<int> ints = objects.Select(s => (int)s).ToList();
适用于所有类型。
总的来说:
List<object> objects = new List<object>();
List<objecttype> castedList = objects.Select(s => (objecttype)s).ToList();
答案 2 :(得分:1)
var typeofkk = kk.ToArray( ).Select( x => x.GetType( ) ).ToArray( ).FirstOrDefault( );
Array ll = Array.CreateInstance( typeofkk, kk.Count );
Array.Copy( kk.ToArray (), ll, kk.Count );
也许,这不是我正在寻找的解决方案,但它以某种方式解决了我的问题。
答案 3 :(得分:0)
尝试使用列表.Cast<int>()
上的kk
。
答案 4 :(得分:0)
试试这个:
var newList = kk.Cast<int>().ToList();