当我们声明一个包含转义序列的字符串时,我们可以在字符串前面使用@。
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'条件。
答案 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);