如何在LINQ查询中连接两个数组并在查询中进一步使用结果?

时间:2013-06-27 22:33:24

标签: c# .net linq join

对于noobish问题很抱歉,我不知道linq,并且必须在不属于我的代码中扩展查询。

是否可以将两个不同方法调用结果的两个枚举连接成一个可枚举的?

var attibutes = from MemberDescriptor a in
     (TypeDescriptor.GetProperties(this) **and** TypeDescriptor.GetEvents(this))
      let attribute = a.Attributes[typeof(MyAttributeAttribute)] 
                                as MyAttributeAttribute
      where attribute != null
       select new AttributeTuple { Property = a, Attribute = attribute };

非常感谢!

1 个答案:

答案 0 :(得分:3)

您可以使用Enumerable.Concat来连接两个IEnumerable<T>序列,但是,在您的情况下,这两个对象的类型不同,因此如果不使用Enumerable.Cast<T>,这将无法正常工作。

您可以通过以下方式将两者视为MemberDescriptor

var search = TypeDescriptor.GetProperties(this).Cast<MemberDescriptor>()
               .Concat(TypeDescriptor.GetEvents(this).Cast<MemberDescriptor>());

var attibutes = from MemberDescriptor a in search
            let attribute = a.Attributes[typeof(MyAttributeAttribute)] as MyAttributeAttribute
            where attribute != null
            select new AttributeTuple { Property = a, Attribute = attribute };