如何为List <object>?</object>创建语句

时间:2013-06-24 06:25:17

标签: c# asp.net sql list

我有一个List<object>的代码部分:

List<object> Result= new List<object>();
Some sql connection code...

SqlCommand com = new SqlCommand(@" Select TOP(10) a,b,c from table

一些sql连接代码......

 while (rd.Read())
        {
           Result.Add(new
            {                  
               a=rd[0],
               b=rd[1],              
               c=rd[2]    
            });  
        }
        rd.Close();
        con.Close();

我想为Result值添加一些声明。例如

if(a == "") 
a=5;

我在javascript部分使用List<object>

var listCategory = $find("ace2").get_completionList();

          var count2 = listCategory .childNodes.length;
          for (j =0; j < count2; j++) {                
              var item2 = listCategory .childNodes[j]._value;
              var a= item2.a;
              var b= item2.b;
              var c= item2.c;
          }

我在html中使用此值。

如何为List<object>()值添加一些声明?

2 个答案:

答案 0 :(得分:1)

不知道你要返回多少列?如果你知道创建一个持有者类别,你必须自己处理,并且不太可维护。

List<KnownType> Result= new List<KnownType>();
a=rd[0];
b=rd[1],
c=rd[2]  
if(a=="" or string.IsNullOrEmpty(a) or YourCondition)
{
change what ever values you want
}
Result.Add(new KnownType
            {                  
               a,b,c
            });

答案 1 :(得分:0)

如果我理解你想要对运行时类型进行条件初始化,之前将它添加到列表中。

所以你可以创建一个函数:

public object GetObject(SqlDataReader rd) {


    var aVal = rd[0]; 
    if(string.IsNullOrEmpty(aVal)) 
        aVal = "5"; //STRING, in your case it's a NUMBER

    return new
           {                  
              a=aVal,
              b=rd[1],              
              c=rd[2]    
           });  
}

并在使用后添加:

while (rd.Read())
{
    ....
    Result.Add(GetObject(rd)); 
    .....
}

如果这不是您所要求的,请澄清。