如何为List<;对象>;

本文关键字:对象 gt lt List | 更新日期: 2023-09-27 18:19:48

我有一个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>()值添加一些语句

如何为List<;对象>;

不知道返回了多少列?如果您知道创建一个holder类,那么您就必须自己处理类型转换,而且维护性较差。

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
            });

如果我完全理解您想要对运行时类型进行条件初始化,请在将其添加到列表之前进行

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

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)); 
    .....
}

如果这不是你想要的,请澄清。