如何在List<object>中获取数组项 c#

3
如何在C#中获取列表中的数组项
IEnumerable<object> enumerable = c1._getbrandrequest(object[]);

List<object> brand = enumerable.Cast<object>().ToList();

List<Brand> brands = new List<Brand>();

for (int i = 0; i <= enumerable.Count(); i++)
{

    var brnd = enumerable.ElementAt(i);

    // brnd (intellisense only produce)
    // brnd. { Equals, GetHashCode, GetType, ToString }

}

Web服务中的ArrayItems图像

提前致谢!


这是一个 object 列表,因此您必须将其转换为正确的类型,我猜测应该是 object[] - cbr
你应该将泛型对象转换为实际类型,这样智能感知才能正常工作。其中一种方法是在运行时进行调试并检查其类型。 - Vivek N
在我的对象数组中{ [0] - { reqid = "1", sid = "2" } } { [1] - { reqid = "1", sid = "2" } }这是截图http://s11.postimg.org/tffcvvtzn/help2.jpg - Ryan Ayala
3个回答

1
如果enumerable包含Brand对象,那么你需要做的就是将enumerable.ElementAt(i)返回的元素转换一下:
var brnd = enumerable.ElementAt(i) as Brand;

你好Aruto,品牌返回Null。 - Ryan Ayala

1
我认为您的代码可以这样写得更简洁一些:

IEnumerable<object> enumerable = c1._getbrandrequest(object[]);
List<Brand> brands = enumerable.OfType<Brand>().ToList();

foreach (Brand brnd in brands)
{
  // Do things with brnd.
}

OfType方法只返回运行时类型为Brand的对象,并且结果是一个IEnumerable,而ToList()方法将它们转换成一个新的列表。

你好Evert,brands返回0。 - Ryan Ayala
啊,可枚举对象是一堆请求对象。我没有足够的信息来帮助你进一步,例如如何根据请求获取品牌,我假设你必须以某种方式执行该请求? - Evert

0
        var enumerable = c1._getbrandrequest( Object[] );

        List<Brand> brands = new List<Brand>();

        foreach (var brnd in enumerable)
        {
            Brand model = new Brand();

            model.sid = brnd.sid;

            brands.Add(model);

        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接