日期:2014-05-19  浏览次数:20785 次

这种效果怎样实现呢?(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.