s1是接收过来的字符串:“101,102,105,106”
if (s1!= null)
  {
  DataSet ds_hwbh =sqlhelper.GetDataSet("select hwbh from fhxx where fhqdh='"+fhqdh_edit+"'");//这个是原来fhxx中保存的hwbh
  Ds_hwbh已经转为字符串s2:"101,102,103,104"
103,104是原来已经保存过的编号,状态已经改变了,现在要在删除之前将其状态恢复为01
105,106是新增加的编号不管其状态。
现在如何通过对比s1和s2两字符串,得出103,104这两个编号,将他们的状态update为01第一种情况
s1='101,102'
s2='101,103'  
s1是fhxx表保存的,现在删除了102这个id 增加了103 所以要找出102这个id要update
要的结果是102
有时候s1,s2只有一个值
第二种情况
s1='101'
s2='102'  
s1是fhxx表保存的,现在删除了101这个id 增加了102 所以要找出101这个id要update
要的结果是101
第三种
s1='101,102,103,104'
s2='101,102,105,106'  
s1是fhxx表保存的,现在删除了103,104 这个id 增加了105,106所以要找出103,104这2个id要update
要的结果为103,104

解决方案 »

  1.   

    wuyazhe不是回答过你了么。思路都有了不能自己动动脑子?别人给一行自己抄一行不觉得难受么。
      

  2.   

    s2.split(',').Except(s1.split(',')) 得到你想要的
      

  3.   

    string[] s3 = Regex.Split(tmp, @"[,,\s]+").Except(Regex.Split(splistr,@"[,,\s]+")).ToArray();
    以上代码就是wuyazhe的
    但是提示"System.Array "并不包含"Except"的定义
    在前面已经using Systgem.linq;
    也试过改成
    string[] s3 = Regex.Split(tmp, @"[,,\s]+").Except<string>(Regex.Split(splistr,@"[,,\s]+")).ToArray();[/
    还是不行
      

  4.   

    这个问题换个角度描述一下就是:在 s1 中找出不存在于 s2 中的项。string s1 = "101,102,103,104,105,106";
    string s2 = "101,103,105,107,109";
    string s3 = String.Join(",", s1.Split(',').Except(s2.Split(',')).ToArray());
    Console.WriteLine(s3);
    我用的是 .NET 3.5 版本,你试试。
      

  5.   

    提示"System.Array" 不存在"Except"的定义
    我的也是.net3.5啊
    前面已经using System.linq;
      

  6.   


    你确定?如果是用 VS2008 会不会是 .NET 2.0?你确认一下。