在比较之前删除字符串中的空格



我想根据电话号码获取联系人,但在Ms Dynamics中,电话号码以各种格式存储,如123 45 678,12 34 56 78,0112345678,01 12345678等。

所以我必须在进行比较之前删除其中的空格,我确实尝试在字符串上使用 Replace 方法,但这在运行时给了我一个非法方法错误。

我真的必须检索所有联系人并执行另一个循环进行比较,还是有没有办法"清理"查询中的字符串?

string phone = "12345678";
var contacts = from c in orgContext.CreateQuery<Contact>()
    join a in orgContext.CreateQuery<Account>() on c.AccountId.Id equals a.AccountId
    where (c.Telephone1.Replace(" ", "").Contains(phone) || c.MobilePhone.Replace(" ","").Contains(phone))
   select new DynamicContact
   {
     ContactId = c.ContactId,
     FirstName = c.FirstName,
     LastName = c.LastName,
     ....and more...    
   };

编辑:

这是异常消息:

无效的"位置"条件。实体成员正在调用无效的属性或方法。

使用 :

phone = phone.Replace(" ", ""); // Replaces whitespace with empty string

这与你在 linq 表达式中执行的操作几乎相同。

String.Join("", yourString.Split(" "))

这将拆分字符串中任意位置的所有空格,并重新加入没有空格的结果数组。我相信这就是你要找的。

不知道 String.Rereplace 的效率是多还是低,但是

new System.String(oldString.Where(x => !Char.IsWhiteSpace(x))); 

将去除所有空格字符。

.Contains替换为 .Equals 。我不确定您的提供商是否支持 String.Contains ,但这可能会导致您的错误。尽管如此,将"0123 1234"归类为"231"的匹配项并没有多大意义。

相关内容

  • 没有找到相关文章

最新更新