在以下内容中声明IQueryable<T>对象时,我遇到了这个问题:
select new { };当我想调用非LINQ方法(如Tostring()或其他函数)时,部分如下所示:
select new
{
TFPricep = CurrancyHelper.DecimalToCurrency(TFPrice),
TFDatep = TFDate.Tostring()
};我收到一条著名的错误信息,上面写着:
LINQ实体不识别“foo”方法。
因此,我执行一个ToList()并从数据库中获取数据,之后我必须对列表执行一个foreach循环,并在每个具有性能问题的列表记录上调用函数,如ToString()等。据我所测试,LINQ中没有这样的问题,但是这个问题在Entity Framework中仍然存在。
我想知道是否有任何方法在查询时调用无LINQ方法,并防止对每个循环执行这种方法?
发布于 2013-10-26 19:52:50
不是
发布于 2013-10-27 03:47:31
当我面对这个问题时,我找到了两个可能的解决方案,但最终决定避免使用Linq对实体无法转换的任何内容。
我找到了两个选择:
1)如果您使用的是.edmx文件,请查看以下内容:http://msdn.microsoft.com/en-us/library/vstudio/dd456857(v=vs.110).aspx
2)另一个选项有点丑,但不需要.edmx文件:
http://damieng.com/blog/2009/06/24/client-side-properties-and-any-remote-linq-provider https://www.nuget.org/packages/Microsoft.Linq.Translations/ https://github.com/peschuster/PropertyTranslator
最后一条评论:我从来没有尝试过这些选择,所以我不能百分之百地肯定它们是否有效,但它们似乎是合法的。
https://stackoverflow.com/questions/19611150
复制相似问题