日期:2014-05-20  浏览次数:20811 次

一个LINQ TO SQL 和lambda表达式的问题.
var res = CrmDataContext.VTotalNumAll.Select(a=> a)
var res=from VT in db.VTotalNumAll select VT  
得到的结果有啥不同,一个是linq to sql表达式,前者是lambada表达式。
为什么我接着操作

VTotalNumAll[] VTotalNumAlls = res.ToArray();
时,后者出现问题:错误 2 参数“1”: 无法从“AnonymousType#1[]”转换为“CRM.Models.VTotalNumAll[]” E:\!会员项目\CRM20090917\CRM\Controllers\StatController.cs

   


------解决方案--------------------
我写了一个类似的例子,是没有错的.

不过看楼主的报错说,不能将匿名类型直接转换为正常的类型.也就是说你的res的结果是一个匿名类型
也就是说,select生成的是匿名类.
------解决方案--------------------
var res = CrmDataContext.VTotalNumAll.Select(a=> a) 
var res=from VT in db.VTotalNumAll select VT 

后者会转化成前者,前者又会转化成匿名函数。。

VTotalNumAll[] VTotalNumAlls = res.ToArray(); 
你这样写:

var res = CrmDataContext.VTotalNumAll.Select(a=> a).ToArray();