2011-10-29 88 views
5

我如何使用trimstart所以實體框架將明白該怎麼辦?用戶trimstart在實體框架查詢

這裏是我的查詢:

string number="123"; 
Workers.Where(x => x.CompanyId == 8).Where(x => x.Number.TrimStart('0') == number); 

我怎樣才能讓沒有AsEnumerable此查詢工作(有很多公司8個工人的)?

+0

數字是否總是數字? –

+0

@Austin Salonen:數字是字符串! – Naor

+0

確實。我想我的意思是字符串的內容總是數字的(比如你的例子)或者像'AAK89234'這樣的有效的「數字」? –

回答

10

爲此嘗試使用SqlFunctions.PatIndex。我使用值"000123","000One","abcde"測試了一個類似於下面的查詢,並正確選擇了值爲"123","One""abcde"的行。

Workers.Where(x => x.CompanyId == 8 && 
        x.Number.Substring(SqlFunctions.PatIndex("%[^0]%", x.Number).Value - 1) == number); 
-1

這是因爲這樣支持EF方法TrimStart但只不參數在SQL裝飾功能可以修剪只空格。

您的需求首先應該討論提高數據庫中數據的質量!您的數據不能提供有效的方式支持此類查詢的質量。

+0

我明白你的意思,這是一個數據存儲爲零的問題。但現在這是系統,我需要找到一個解決方案。謝謝。 – Naor

+0

Downvoted - 我同意數據庫是數據清理的地方,但第三方數據庫並不總是能夠控制這些數據。更有用的答案是像傑夫提到的問題的解決方案。 - 對於所有的理論答案和實踐不夠。 – hewstone