2011-11-16 21 views
0

我使用EF4.0並定義了一個函數導入,以返回一個在我的存儲過程中建模的複雜類型。然而文本我可以執行存儲過程精細,讓我的返回結果正確,我所有的過濾工作,除了1哪裏存儲的proc不工作的結果

result = result.Where(item => item.LANID == filter.LanId); 

filter.LandId的調試器中的值是「HO \\用戶X」, Visualizer告訴我實際的值是「HO \ UserX」(這是正確的,它應該是什麼)。存儲過程返回的LANID列確實也包含該確切值(「HO \ UserX」),但是在我之後,結果數爲0.

有誰知道EF如何過濾此列表以及爲什麼這個特殊的過濾器會搞砸?我假設某個地方某些東西被錯誤地轉義了,但我無法弄清楚什麼或在哪裏。

任何提示將不勝感激。

回答

0

EF無所事事。如果result是存儲過程的結果,則意味着所有實體都已加載到您的應用程序中,並且通過Linq-to-objects完成過濾。調試器向您顯示\\,因爲\是轉義序列的特殊字符,所以如果要在字符串中使用\字符,則必須轉義\\

+0

嗨拉迪斯拉夫,我明白,我試過filter.LanId = filter.LanId.Replace(@「\」,@「\\」)然後執行where,但結果仍然是空的。 – user1037563

+0

只有這個單個字符串或包含'\'字符的每個字符串都有問題嗎? –

+0

只有LandId字段包含這些內容,並且這是導致我遇到問題的唯一字段。我會嘗試更新不同的字段以包含\並查看過濾器是否適用於此。 – user1037563