循环遍历包含IEnumerable和变量的对象

时间:2018-04-11 22:46:08

标签: c# asp.net

我目前正在使用C#在ASP.NET中工作并遇到一些问题。

我有以下课程:

public class AvailableTicket
{
    public IEnumerable<Jazz> jazz;
    public IEnumerable<Dining> dining;
    public IEnumerable<Walking> walking;
    public IEnumerable<Talking> talking;

    public IEnumerable<Ticket> tickets;

    public int amountToOrder;
    public string Option;
}

在视图中,我想循环遍历类中的IEnumerables。 我已经查找了GetType()。GetProperties,但我被困在这里。

我在foreach中使用什么来只选择对象中的IEnumerable?

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

我自己找到了解决方案。

我必须使用

Model.GetType().GetProperties().OfType<IEnumerable<object>>()

为了过滤掉类中的所有IEnumerable。

答案 1 :(得分:1)

您需要filter the properties by their PropertyType并检查它是否是实现类型定义为IEnumerable<>的接口的类型。以下是如何使用LINQ:

Model.GetType().GetProperties().Where( p =>
    p.PropertyType.GetInterfaces().Any( i =>
        i.IsGenericType &&
        i.GetGenericTypeDefinition() == typeof(IEnumerable<>)
    )
);