2013-02-01 39 views
1

我有一个DataTable并有两列'名字'和'姓氏'。DataColumn表达式连接列 - 返回空

我已经创建了一个datacolumn来从这两列的concat值。这里是我的代码 -

DataColumn fullname = dt.Columns.Add("Full Name"); 
string fn = string.Format(string.Concat("'First Name - '+", "{0}", "+ ';<br />"), "FN"); 
string ln = string.Format(string.Concat("Last Name - '+", "{0}", "+ ';<br />"), "LN"); 
otherDetails.Expression = string.Concat(fn, ln); 

该代码工作正常,连接两个字段的值。但是,如果任何列值为空,则表达式不起作用,并且返回为空。

例如对于第五条记录是如果第一个名字是'Tim',第二个名字是空的,我希望该值显示为'Tim'。但是对于那个记录来说,这个表达式列的值是空的。

任何想法?

+0

'string.Concat(null,“2”)'将返回“2”,不是空字符串或空值。你能给更多“真实”的代码吗? –

+0

这是真实的代码。实际的级联处于表级别。表达'名字'+ FN不返回“名字 - ”。相反,它是空的。如果FN列的记录具有NULL值。 – NLV

+0

哪个字符串常量? FN和LN是列名称。 – NLV

回答

1

认为你可能尝试

string fn = string.Format(string.Concat("'First Name - '+", "{0}", "+ ';<br />"), "IsNull(FN, '')"); 
string ln = string.Format(string.Concat("Last Name - '+", "{0}", "+ ';<br />"), "IsNull(LN, '')"; 
+0

哇。刚才发现一样。谢谢! – NLV

1

试试这个语法的字符串实例:

string ln = string.Format(string.Concat("Last Name - '+", "{0}", "+ ';<br />"), "LN") ?? ""; 

这应该设置任何空为空字符串。

+0

试过这个。不工作。我不明白这一点?实际上是评估的。 ?? ??必须在表达式中使用,对吗? – NLV