2011-09-09 22 views
0

我想讓用戶輸入郵編,然後比較前幾個字符以查看它們是否存在於數據庫的列中。將郵編字符串與3-4個字符值列進行比較

基本上輸入的郵編例如可以是bt1 5ws。在sql服務器數據庫的列中有郵編開始的例如bt1,bt10,iv1。

想法是找出用戶來自哪個區域。

var Pcode = storeDB.DeliveryPCodes.SingleOrDefault(x => x.PCode == Customer.PCode)).ToString(); 

上述代碼將輸入的整個郵編與列中的代碼進行比較,並且不起作用。

我使用C#,MVC3,實體框架(代碼第一)與SQL Server 2008

回答

0

您可以使用字符串的方法,如StartsWith

var code = Customer.PCode.SubString(0, 3); 

var Pcode = storeDB.DeliveryPCodes. 
    SingleOrDefault(x => x.PCode.StartsWith(code)).ToString(); 
+0

如何我是否確保用戶輸入最少6個字符?因爲目前他們只能輸入1作爲他們的郵編 – Beginner

+0

@Beginner用[StringLength]裝飾你的'PCode'屬性(http://msdn.microsoft.com/zh-cn/library/system.componentmodel.dataannotations.stringlelengthhattribute。 aspx)屬性。您可以給出該酒店的最小和最大長度。 MVC會自動爲它添加驗證。 – Eranga

+0

也從數據庫中返回值的加載,因爲郵件的加載將以bt1開始,例如,您有bt1,bt11,bt12 – Beginner

0

試試這個:

string postCode = Customer.PCode; 
var PCode = storeDB.DeliveryPCodes.FirstOrDefault(x => postcode.StartsWith(x.PCode)) 
+0

,它返回值的加載,因爲postcodes的加載以bt1開始,你有bt1,bt11,bt12 – Beginner

+0

但是這在你的場景中是有效的結果。 –

+0

我使用了==以後我拿走了最後3個字符 – Beginner

相關問題