这种效果怎样实现呢?(C#)
有一SQL Server表,内容如下:
name alias age
张三 23
李四 24
王五
卢芳 小芳
操利
李焱
季霞 小霞 22
周中继
张延 张慎
孙起 21
…………
…………
其中name列不能为空,其它两列可以为空。
按照下面的规则,获得组合字符串:
单行记录的组合resultText = name+ “\\” + alias + “:” + age
多行记录的组合resultText = resultText + “,”
如果alias为空,则省去“\\”;如果age为空,则省去“:”;然后将每一行用“,”分开,组合成一个字符串。
举例说明如下:
就上面的表,第一行应该是:张三:23
第二行是:李四:24
第三行是:王五
第四行是: 卢芳//小芳
……
……
然后将每一行用“,”分开,组合成一个字符串。
请问:怎样实现呢?
------解决方案--------------------SELECT name+(CASE WHEN alias IS NULL THEN ' ' ELSE '\\ '+alias END)+(CASE WHEN age IS NULL THEN ' ' ELSE ': '+age END) FROM 表
------解决方案--------------------public static string temp(DataTable dt)
{
StringBuilder sb = new StringBuilder();
for(int i = 0;i <dt.Rows.Count;i++)
{
sb.Append(tempFormate(dt.Rows[i][ "name "].ToString(), dt.Rows[i][ "alias "].ToString(), dt.Rows[i][ "age "].ToString()) + ", ");
}
return sb.Remove(sb.Length - 1, 1);
}
private static string tempFormate(string name, string alias, string age)
{
StringBuilder sb = new StringBuilder();
sb.Append(name);
if (alias.Length > 0)
{
sb.Append( "// " + alias);
}
if (age.Length > 0)
{
sb.Append( ": " + age);
}
return sb.ToString();
}
这是把数据读到一个Table里,当然你也可以用DataReader,或者DataSet,只需要改改就可以了.相信LZ没问题的
------解决方案--------------------return sb.Remove(sb.Length - 1, 1);得加个ToString()
------解决方案--------------------ding.