如何保持用户输入的转义序列(C#)

时间:2017-01-20 00:58:07

标签: c# dynamics-crm

当我们声明一个包含转义序列的字符串时,我们可以在字符串前面使用@。

string fulljob = @"division\jobtitle";

但是如果字符串值来自用户输入怎么办?我需要查询:

public string GetContactName(string fulljob)
    {

        QueryExpression query = new QueryExpression("contact");
        string[] cols = { "jobtitle", "lastname" };
        query.Criteria = new FilterExpression();
        query.Criteria.AddCondition("jobtitle", ConditionOperator.Equal, fulljob);
        query.ColumnSet = new ColumnSet(cols);

        EntityCollection ec = _service.RetrieveMultiple(query);
        string tes = string.Empty;

        foreach (Entity en in ec.Entities)
        {
            tes = tes + en["lastname"].ToString();
        }
        return tes;
    }

我们从用户输入中获得string fulljob。当我们运行上面的查询时,它会给我错误,因为字符串中有转义序列:

  

属性'contact.jobtitle'的条件:null不是属性的有效值。改为使用'Null'或'NotNull'条件。

1 个答案:

答案 0 :(得分:3)

替换此行:

query.Criteria.AddCondition("jobtitle", ConditionOperator.Equal, fulljob);

由此:

if (string.IsNullOrEmpty(fulljob))
    query.Criteria.AddCondition("jobtitle", ConditionOperator.Null);
else
    query.Criteria.AddCondition("jobtitle", ConditionOperator.Equal, fulljob);