簡體   English   中英

有沒有辦法在實體框架中的IQueryable對象的select新部分內調用無LINQ方法?

[英]Is there any way to call a none LINQ method inside the select new part of an IQueryable object in entity framework?

我在以下內容中聲明IQueryable<T>對象時遇到此問題:

select new { };

當我想調用像Tostring()這樣的無LINQ方法或我擁有的任何其他函數時,如下所示:

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

我收到這條着名的錯誤消息:

LINQ to Entities無法識別方法'foo'。

所以會發生的是我執行ToList()並從數據庫中獲取數據,之后我將不得不在列表上執行foreach循環,並在每個列表記錄上調用ToString()等函數,這些函數存在性能問題。 據我測試,在LINQ to SQL中沒有這樣的問題,但Entity Framework仍存在此問題

我想知道在查詢時是否有任何方法可以調用任何LINQ方法並阻止對每個循環執行此操作?

沒有

當我遇到這個問題時,我找到了兩種可能的解決方案,但最終決定避免使用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

最后一條評論:我從未嘗試過這些選項,所以我不是百分之百確定他們甚至可以工作,但他們看起來合法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM