PropertyInfo[] properties = type.GetProperties().Select(x => x.DeclaringType.ToString() == "CrazyNinjaBadger");
Select(...)
返回IEnumerable<T>
一个implemenetation。编译器错误非常明确。
另一点是你想过滤属性。 .Select(...)
用于将枚举投影到另一个相同或其他类型。
例如:
IEnumerable<string> strings = new string[] { "0", "1" };
// Converting the string enumerable to an enumerable of integers:
IEnumerable<int> integers = strings.Select(some => int.Parse(some));
// Also, convert each strings into an anonymous object!
IEnumerable<object> whoKnows = strings.Select(some => new { Value = some });
为了过滤,你需要使用.Where(...)
可枚举。
在另一方面,x.DeclaringType.ToString() == "CrazyNinjaBadger"
是正确的,但它应该是x.DeclaringType.Name == "CrazyNinjaBadger"
(你不需要的类型转换为字符串作为Type
有一个属性Name
)。
最后我要说的是,你不需要设置结果在一个数组,你可以这样做:
IEnumerable<PropertyInfo> properties =
type.GetProperties()
.Where(x => x.DeclaringType.Name == "CrazyNinjaBadger");
谢谢你的额外的细节...我想接受的答案去你:) – markp3rry 2013-02-14 14:10:14
@ markp3rry选择运算符是错误的(请参阅下面的答案)! – 2013-02-14 14:13:00
@lazyberezovsky是的,我已经解决了这个问题。谢谢! – 2013-02-14 14:15:06