我正在尝试从数据库中的后置代码字段中删除空格,这样当我将它与用户输入进行比较时,我正在比较两个字符串,后面的代码中没有空格,所以它应该无关紧要如何输入邮政编码。
这是我的LINQ查询,其替换功能似乎不起作用:
List<SchoolReferanceDTO> res = db.SchoolReferences.Where(x => x.SchoolReferencePostcode.Replace(" ", "").Contains(Postcode)).Select(x => new SchoolReferanceDTO()
{
SchoolReferenceSchoolId = x.SchoolReferenceSchoolId,
SchoolReferenceEstablishmentName = x.SchoolReferenceEstablishmentName,
SchoolReferenceStreet = x.SchoolReferenceStreet,
SchoolReferenceLocality = x.SchoolReferenceLocality,
SchoolReferenceAddress3 = x.SchoolReferenceAddress3,
SchoolReferenceTown = x.SchoolReferenceTown,
SchoolReferenceCounty = x.SchoolReferenceCounty,
SchoolReferencePostcode = x.SchoolReferencePostcode,
SchoolReferenceEmail = x.SchoolReferenceEmail
}).ToList();
我将它与之比较的字符串:
postcode = postcode.Replace(" ", string.Empty);
答案 0 :(得分:2)
一种方法是删除Replace
,然后使用LIKE
。由于邮政编码通常较短,您可以将目标代码ST14BJ
转换为%S%T%1%4%B%J%
(demo),并使用LIKE
运算符:
var postPattern = Regex.Replace(postcode, "(?<=.|^)(?=.|$)", "%");
List<SchoolReferanceDTO> res = db.SchoolReferences
.Where(x => SqlFunctions.PatIndex(postPattern, x.SchoolReferencePostcode) >= 0)
.Select(...);