2011-09-09 21 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

相关问题