日期:2014-05-17  浏览次数:20854 次

请问,这种集合操作怎么处理

List<object> list_1 = new List<object>() { "张三","李四","王二"};
list_1.Cast<string>();
List<string> list_2 = new List<string>();
list_2 = new List<string>(list_1);  //报错。具有无效参数
list_1.ForEach(x =>list_2.Add(x));   //报错。具有无效参数



1:上面的代码,集合list_1的元素是object类型,但是通过Cast方法把元素转换成了string类型,list_2为什么不能加list_1的元素?
2:怎么把list_1的元素添加到list_2中去?
------最佳解决方案--------------------
list_1.Cast<string>(); 这个是返回一个List<string>, 你的linst_1还是List<object>,

你可以List<string> strList = list_1.Cast<string>();
后面操作这个strList
------其他解决方案--------------------
List<object> list_1 = new List<object>() { "张三","李四","王二"};
list_1.Cast<string>();
List<string> list_2 = new List<string>();
//list_2 = new List<string>(list_1); 
list_1.ForEach(x =>list_2.Add(x as string)); 
------其他解决方案--------------------
list_2.AddRange(list_1.Cast<string>().ToArray());

------其他解决方案--------------------
list_2 =list_2.Contact(list_1);
------其他解决方案--------------------
list_1.Cast<string>();

你这句代码没有任何意义,注意CASE方法是有返回值的,所以你的这句代码对list_1没有任何影响

你可以这样:
var list3=list_1.Cast<string>();

不过从编程角度来讲,我建议你使用OfType代替Case
------其他解决方案--------------------
注意Cast方法是有返回值的