我有以下数据表。
clientcode - jobcode - sitename
abc bcd http://ourlocaldomain.com/sites/
我需要一个新的列,其中值应为:http://ourlocaldomain.com.sites/abc/bcd
我的代码如下:
var keywordQuery = new KeywordQuery(site);
keywordQuery.SortList.Add("Modified", SortDirection.Descending);
var dataTable = KQLUtilities.ExecuteKql(keywordQuery, queryText, selectedProperties.ToArray(), keywordQuery.SortList);
var jobSiteUrl = new DataColumn("JobSiteUrl");
jobSiteUrl.Expression = String.Format("{0}/{1}{2}", "SiteName", "ClientCode", "JobCode");
dataTable.Columns.Add(jobSiteUrl);
我遇到的错误是:
Cannot find column [ClientCodeJobCode].
答案 0 :(得分:1)
您现在分配表达式的方式,表达式为:
SiteName/ClientCodeJobCode
因此,在评估表达式时,代码会尝试获取SiteName
列中的值,并将其除以ClientCodeJobCode
列中的值。
根据MSDN(参见here),表达式中的字符串连接是使用+
运算符完成的。
根据您的确切样本数据,这应该为您提供所需的输出:
jobSiteUrl.Expression = "SiteName + ClientCode + '/' + JobCode";
输出将是:
http://ourlocaldomain.com/sites/abc/bcd
这与您的示例网址(= http://ourlocaldomain.com.sites/abc/bcd
)不同,但我相信您有错字。 .
之前的sites
应该是/
,对吗?
如果在某些情况下您的网站名称不包含尾随/
,您可以使用此表达式来检查短划线是否存在并添加它以防万一:
jobSiteUrl.Expression = "SiteName + IIF(SUBSTRING(SiteName, LEN(SiteName), 1) = '/', '', '/') + ClientCode + '/' + JobCode";