/// <summary>
        /// 根据id获得对应栏目的子栏目 3-25
        /// </summary>
        /// <param name="FatherId">一级栏目</param>
        /// <returns>子栏目泛型类</returns>
        public static IList<Class> ChannelList(int FatherId)
        {
            IList<Class> ILClass = new List<Class>();
            SqlParameter[] para = new SqlParameter[]
           {
               new SqlParameter("@Class_farther",FatherId),
           };
            DataSet ds = DBHelper.GetDataSet("[Proc_GetChannelInfoById]","Tb_Class",para);            foreach (DataRow row in ds.Tables[0].Rows)
            {
                Class Channel = new Class();
                Channel.SClass_name = Convert.ToString(row["Class_name"]);
                Channel.NAdmin_id = Convert.ToInt32(row["Admin_id"]);
                Channel.NClass_id = Convert.ToInt32(row["Class_id"]);
                Channel.NClass_farther = Convert.ToInt32(row["Class_farther"]);
                ILClass.Add(Channel);
            }
            return ILClass;
        }
出现错误在应使用条件的上下文(在 'Class_farther' 附近)中指定了非布尔类型的表达式。

解决方案 »

  1.   

    检查Proc_GetChannelInfoById
    (int)row["Admin_id"];
      

  2.   

    检查Proc_GetChannelInfoById存储里,
    检查 == 是否写成了 =
      

  3.   


    Create proc [dbo].[Proc_GetChannelInfoById]
    (
    @Class_farther int
    )as
    declare @FID nvarchar(10),@sql nvarchar(50)
    set @FID=convert(nvarchar(10),@Class_farther)
    set @sql='select * from A where 1=1 '
     if @FID>0
      begin 
             set @sql=@sql+'and Class_farther='+@FID+'order by News_time desc  '
      end 
    print @sql  /*==========测试=========*/
    exec sp_executesql @sql 
    go
      

  4.   


    set @sql=@sql+'and Class_farther='+@FID+'order by News_time desc  '这里Class_farther='+@FID+'与order 中间怎么没有空格
    set @sql=@sql+'and Class_farther='+@FID+' order by News_time desc  '
      

  5.   

    if @FID>0
    nvarchar型也不能这么比较,可以len(@FID)>0
      

  6.   

    FID的类型有问题,怎么可以写@FID>0呢?
      

  7.   


    可是不是已经转化了吗set @FID=convert(nvarchar(10),@Class_farther)
      

  8.   


    现在报错是说 DataSet ds = DBHelper.GetDataSet("[Proc_GetChannelInfoById]","Tb_Class",para);
     等号附近有语法错误
      

  9.   


    转来转去还是转成nvarchar型啊~
    convert(你的目标类型,变量)
      

  10.   

    if @fid>0这边应该有问题吧,你上面把它转成字符串,现在判断时又让它弄成数值的
      

  11.   

    表中 Class_farther 是什么类型?
      

  12.   

    if @FID>0改成if @Class_farther>0 看看
      

  13.   

    引用 12 楼 skep99 的回复:
    if @FID>0
    nvarchar型也不能这么比较,可以len(@FID)>0
    可是不是已经转化了吗
    SQL code
    set @FID=convert(nvarchar(10),@Class_farther)类型不对。。int 与 nvarchar 不能直接加的。
    你print 也是print 不出来的,我觉得建立存储过程的时候应该也会错吧