如何为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>()
值添加一些语句
不知道返回了多少列?如果您知道创建一个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));
.....
}
如果这不是你想要的,请澄清。