我在从返回的IList中提取值并在windows.forms中填充组合框时遇到问题。组合框中的所有项目都列为System.object
。
我做了一些测试;
var retList = Services.Get<IWarehouseInfo>().ExecuteSPArray("sp_executesql", dict); <-- method that returns some values.
//Tries to extract value from retlist/which is a IList<object[]> collection.
var strList = (from o in retList select o.ToString()).ToList();
var strList2 = retList.OfType<string>().ToList();
var strList3 = retList.Cast<string>();
var strList4 = retList.Where(x => x != null).Select(x => x.ToString()).ToList(); //All these seem to result in system object.
var bub = strList.ElementAt(2).ToString();
var bob = strList4.ElementAt(2).ToString();
var kupa = strList.ToArray();
var kupo = kupa[2].ToString();
所有这些都无法提取任何有用的东西。
答案 0 :(得分:1)
我感谢所有人发出的哔哔声。我的错误是我想的 返回的值在对象列表中。但结果是 一个IEnumerable,所以我没有检查正确的向量。
我添加了一个提取值并以所需格式返回的方法,在本例中为string。
private static List<string> ToListString(IEnumerable<object[]> inparam)
{
var custNums = new List<string>();
foreach (var row in inparam)
{
if (row[0] != null && row[0] != DBNull.Value)
custNums.Add(row[0].ToString());
}
return custNums;
}