从“属性”中删除前四个属性的最简单方法是什么。其中properties是PropertyInfo集合,如下所示。

PropertyInfo[] properties = GetAllPropertyForClass(className);

public static PropertyInfo[] GetAllPropertyForClass(string className) {
    Type[] _Type = Assembly.GetAssembly(typeof(MyAdapter)).GetTypes();

    return _Type.SingleOrDefault(
                t => t.Name == className).GetProperties(BindingFlags.Public |
                BindingFlags.NonPublic |
                BindingFlags.Instance |
                BindingFlags.DeclaredOnly);
}


当然,通过忽略基于索引或名称的属性,我可以遍历并构建另一个PropertyInfo []集合。但是我想知道是否有任何方法可以不循环遍历属性。

谢谢

最佳答案

LINQ帮助:

PropertyInfo[] almostAllProperties = properties.Skip(4).ToArray();


这适用于各种IEnumerables,不仅适用于PropertyInfo数组。



编辑:正如其他人指出的那样,按名称排除属性更为可靠。使用LINQ的方法如下:

PropertyInfo[] almostAllProperties = properties.Where(
    p => p.Name != "ExcludeProperty1"
        && p.Name != "ExcludeProperty2"
        && p.Name != "ExcludeProperty3").ToArray();

关于c# - 从PropertyInfo中删除属性[],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5510156/

10-10 11:19