PART_Collection<PART_List> l_list = g_Value[“AA” ];
PART_Collection<PART_List> l_templist = l_list.Where(p => p.time <= g_readtime).ToList();
这两行代码的结果却是报错的:
无法将类型“System.Collections.Generic.List<Test.PART_List>”
隐式转换为 “Test.PART_Collection<Test.PART_List>”
为什么说集合的类型不一致呢?从 PART_Collection<PART_List> 中查询出来的集合类型怎么就不是 PART_Collection<PART_List> 了?有什么方法解决这个问题吗?
PART_Collection<PART_List> l_templist = l_list.Where(p => p.time <= g_readtime).ToList();
这两行代码的结果却是报错的:
无法将类型“System.Collections.Generic.List<Test.PART_List>”
隐式转换为 “Test.PART_Collection<Test.PART_List>”
为什么说集合的类型不一致呢?从 PART_Collection<PART_List> 中查询出来的集合类型怎么就不是 PART_Collection<PART_List> 了?有什么方法解决这个问题吗?
解决方案
10
加一个强制转换。
你tolist后类型不再是你原来的类型了
你tolist后类型不再是你原来的类型了
5
PART_Collection 是什么东西,谁能看出来?
5
人家明明说的是“List<PART_List> 不是 PART_Collection<PART_List>”,你可不能这么明显地歪曲提示信息啊。
5
PART_Collection<PART_List> l_templist = l_list.Where(p => p.time <= g_readtime).ToList() as PART_Collection<PART_List> ;
你试试这样呢?
5
上图是原始代码及提示,加TOLIST()是本人打错了。
下面是代码部分:RSI_Collection<Rsi_List> l_list = g_Value_RSI["AA"]; var l_var = l_list.Where(p => p.time <= g_readtime).ToList(); RSI_Collection<Rsi_List> l_templist1 = l_list.Where(p => p.time <= g_readtime);
不管是 List<> 还是 IEnumerable<>,总之不是 RSI_Collection<>。
你的这个类型能根据什么来使用枚举来赋值呢?你并没有半点说明。
5
强制转换后,编译可以通过,但运行时还是提示类型不对。
不要自欺欺人地去“强制类型转换”,你要能说出点稍微深度来。假如你不知道
a = 1;
为什么出错(例如a可能声明是一个字典类型的),那么就回到刚学的时候的状态。
而你这个帖子,根本不知道你所谓的 PART_Collection<> 是什么东东,莫非就靠胡乱瞎猜就能编程?
5
Linq 查询结果跟你的自定义的那个类型,凭什么就兼容呢?你没有给出任何说明。
不要胡乱“强制类型转换”。关键不在于类型转换,关键在于这种想当然的习惯来误导你本人,最终导致你不求甚解的后果。
不要胡乱“强制类型转换”。关键不在于类型转换,关键在于这种想当然的习惯来误导你本人,最终导致你不求甚解的后果。
5
看看 C# 把他识别成什么类型
//TEST_Collection<TEST_LIST> var l_temp = l_list.Where(p => p.id > 5); Console.WriteLine(l_temp.GetType()); foreach (var x in l_temp) Console.WriteLine("id:{0} name:{1}", x.id, x.name);