C#三层linq

无法将类型为“System.Data.Linq.DataQuery`1[DAL.Message]”的对象强制转换为类型“System.Collections.Generic.List`1[DAL.Message]”。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidCastException: 无法将类型为“System.Data.Linq.DataQuery`1[DAL.Message]”的对象强制转换为类型“System.Collections.Generic.List`1[DAL.Message]”。

源错误:

行 74:         public List<Message> findPage(int pagesize, int pageindex)
行 75:         {
行 76:             return (List<Message>)mdc.Message.Skip(pageindex * pagesize).Take(pagesize);
行 77:         }
行 78: 




源文件: D:\My Documents\Visual Studio 2008\Projects\Messages\BLL\MessageBLL.cs    行: 76

堆栈跟踪:


[InvalidCastException: 无法将类型为“System.Data.Linq.DataQuery1[DAL.Message]”的对象强制转换为类型“System.Collections.Generic.List1[DAL.Message]”。]
   BLL.MessageBLL.findPage(Int32 pagesize, Int32 pageindex) in D:\My Documents\Visual Studio 2008\Projects\Messages\BLL\MessageBLL.cs:76
   Web.index.GetData() in D:\My Documents\Visual Studio 2008\Projects\Messages\Web\index.aspx.cs:45
   Web.index.Page_Load(Object sender, EventArgs e) in D:\My Documents\Visual Studio 2008\Projects\Messages\Web\index.aspx.cs:40
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +43
   System.Web.UI.Control.OnLoad(EventArgs e) +91
   System.Web.UI.Control.LoadRecursive() +74
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2603


问题补充:
谢谢你的回答,这个我知道就是不知道怎么去转换。

虽然不知道你的mdc对应的代码实际是什么样的,不过这样大概能解决你的问题:
[code="c#"]mdc.Message.Skip(pageindex * pagesize).Take(pagesize).ToList();[/code]
这个ToList()是Enumerable类上的方法,是针对IEnumerable的扩展方法。DataQuery同时实现了IQueryable与IEnumerable,因此可以使用该方法。

说明mdc.Message.Skip(pageindex * pagesize).Take(pagesize); 这个执行结果的类型不是List嘛,自己检查看确定下