DataView dv=new DataView();
dv.RowFilter="3=case when charindex('-',sid)>0 then left(sid,charindex('-',sid)-1) else sid end";
错误提示: when 后面缺少操作数.但是CASE WHEN用在查询分析器里头是对的.
在C#里头写为何就不行了呢?
请问,有什么办法吗?

解决方案 »

  1.   

    首先你有几个问题,
    第一:RowFilter相当与Where后面的语句,而case when根本不能作为Where后面的选择条件。第二:case when在C#中不支持,关于RowFilter可以参考MSDN:ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemdatadatacolumnclassexpressiontopic.htm
      

  2.   

    遇到高手了。
    那你能不能告诉我如何才能将DV中满足
    3=case when charindex('-',sid)>0 then left(sid,charindex('-',sid)-1) else sid end
    的记录找出来呢?SID的值例如这样:
    2
    3-1
    4-3
    4
    5
    3-2
    将-之前或没-的时候就全部取出来。
    得到:
    2
    3
    4
    4
    5
    3
      

  3.   

    一个简单的方法是,添加一列,把没一行sid的值根据="3=case when charindex('-',sid)>0 then left(sid,charindex('-',sid)-1) else sid end";原则处理添加到新列中,在来判断新列的值。