日期:2014-05-18  浏览次数:20886 次

LINQ报错 求救~
Works2是一个已经查询出来的 并tolist了的 一个集合 只有ID 数据量大概是5000左右
 results = results.OrderBy(p=>p.ID).Where(p => Works2.Any(p2 => p2.ID == p.ID));

但是 我已调试 就报错
报错位置就是这句话 
错误提示如下

无法创建类型为“结束类型”的常量值。此上下文仅支持基元类型(“例如 Int32、String 和 Guid”)。

我百度了好久 就是找不到原因 什么是结束类型啊 LINQ没有错啊  

我后来 把Works2全部数据都查询出来了 
然后 
var xxx =form p1 in results from p2 in Works2 where p1.id==p2.id select p1;
var xxx2= xxx.ToList();
还是报错 在
var xxx2= xxx.ToList();
处报错

一样的错误  
我就郁闷了 这是为什么啊

------解决方案--------------------
C# code

 List<TestModel> lst1=new List<TestModel>(){new TestModel("1","NAME1"),new TestModel("2","NAME2")};
           List<TestModel> lst2 = new List<TestModel>() { new TestModel("2", "NAME2"), new TestModel("3", "NAME3") };
            lst2.Where(P=>lst1.Any(o=>o.ID==P.ID)).ToList().ForEach(v=>Console.WriteLine(v.ID+":"+v.NAME));

------解决方案--------------------
没发现你说的问题呢~
------解决方案--------------------
var xxx =(form p1 in results from p2 in Works2 where p1.id==p2.id select p1).ToList();
------解决方案--------------------
var xxx2= Works2.ToList();
这样会报错否
------解决方案--------------------
results = results.OrderBy(p=>p.ID).Where(p => Works2.Exists(p2 => p2.ID == p.ID));