Code Bye

LINQ 查询实体类的类型不符

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>  了?有什么方法解决这个问题吗?
解决方案

10

加一个强制转换。
你tolist后类型不再是你原来的类型了

5

PART_Collection 是什么东西,谁能看出来?

5

引用:

这两行代码的结果却是报错的:
无法将类型“System.Collections.Generic.List<Test.PART_List>”
隐式转换为                 “Test.PART_Collection<Test.PART_List>”
为什么说集合的类型不一致呢?从 PART_Collection<PART_List>  中查询出来的集合类型怎么就不是 PART_Collection<PART_List>  了?有什么方法解决这个问题吗?

人家明明说的是“List<PART_List> 不是 PART_Collection<PART_List>”,你可不能这么明显地歪曲提示信息啊。

5

引用:
Quote: 引用:

加一个强制转换。
你tolist后类型不再是你原来的类型了


强制转换后,编译可以通过,但运行时还是提示类型不对。

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


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明LINQ 查询实体类的类型不符