0

在以下内容中声明IQueryable<T>对象时出现此问题:

select new { };

当我想调用无 LINQ 方法Tostring()或我拥有的任何其他函数时的一部分,如下所示:

select new
{
    TFPricep = CurrancyHelper.DecimalToCurrency(TFPrice),
    TFDatep = TFDate.Tostring()
};

我收到这条著名的错误消息,上面写着:

LINQ to Entities 无法识别方法“foo”。

所以发生的事情是我执行 aToList()并从数据库中获取数据,之后我将不得不在列表上执行一个 foreach 循环,ToString() 并在每个有性能问题的列表记录上调用诸如等之类的函数。据我测试,LINQ to SQL 中没有这样的问题,但这个问题仍然存在Entity Framework

我想知道在查询时是否有任何方法可以调用无 LINQ 方法并防止为每个循环执行此类方法?

4

2 回答 2

1

当我遇到这个问题时,我找到了两种可能的解决方案,但最终决定避免使用 Linq to Entities 无法翻译的任何内容。

我找到了两个选择:

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

最后一条评论:我从未尝试过这些选项,所以我不能 100% 确定它们是否有效,但它们看起来是合法的。

于 2013-10-27T03:47:31.963 回答
1

不     

于 2013-10-26T19:52:50.503 回答