我正在努力解决以下问题:
我有对象列表和对象类型是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 );
Run Code Online (Sandbox Code Playgroud)
并且我想要转换List<object>为List<objecttype>以上示例对象类型为int.我想投List<object>给List<int>.有没有办法解决这个问题?
我正在寻找通用解决方案,并假设不知道铸造类型.

使用linq的两种方法
如果没有任何对象,则抛出此版本int.
var ints = kk.Cast<int>().ToList();
Run Code Online (Sandbox Code Playgroud)
此版本将只保留可以投射到的版本int.
var ints = kk.OfType<int>().ToList();
Run Code Online (Sandbox Code Playgroud)
也许你可以尝试这样的事情:
List<object> objects = new List<object>();
List<int> ints = objects.Select(s => (int)s).ToList();
Run Code Online (Sandbox Code Playgroud)
应该适用于所有类型。
所以一般来说:
List<object> objects = new List<object>();
List<objecttype> castedList = objects.Select(s => (objecttype)s).ToList();
Run Code Online (Sandbox Code Playgroud)
var typeofkk = kk.ToArray( ).Select( x => x.GetType( ) ).ToArray( ).FirstOrDefault( );
Array ll = Array.CreateInstance( typeofkk, kk.Count );
Array.Copy( kk.ToArray (), ll, kk.Count );
Run Code Online (Sandbox Code Playgroud)
也许,这不是我正在寻找的解决方案,但它以某种方式解决了我的问题。
| 归档时间: |
|
| 查看次数: |
5820 次 |
| 最近记录: |