1

很抱歉这个菜鸟问题,我不知道 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 };

非常感谢!

4

1 回答 1

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 };
于 2013-06-27T22:36:32.150 回答