Bueno, siempre y cuando las propiedades de cada objeto no son desconocidos internamente a sí mismos que podrían hacerlo.
No es una gran manera genérica para probar todas las propiedades de un objeto dinámico, si usted no tiene control sobre el DynamicObject
que espera el implementador implementado GetDynamicMemberNames()
y puede utilizar métodos de la Nuget paquete de ImpromptuInterface para getting the property names y dynamically invoking those names.
return allItems.Where(x=> Impromptu.GetMemberNames(x, dynamicOnly:true)
.Any(y=>String.IsNullOrWhiteSpace(Impromptu.InvokeGet(x,y));
De lo contrario, ya que es su propio tipo MyType
puede añadir su propio método que se puede ver la contabilidad interna de los valores de los miembros.
return allItems.Where(x => x.MyValues.Any(y=>String.IsNullOrWhitespace(x));
Existen otros tipos que pueden contener propiedades desconocidas, como 'ExpandoObject'. Su vida sería mucho más fácil si pudiera usar 'ExpandoObject' en lugar de' DynamicObject'. – dasblinkenlight
Tendría que verificar si los controles de UI que estoy usando soportan ExpandoObject, pero si lo hacen, no tengo problemas para hacer la transición de DynamicObject a ExpandoObject. La pregunta es, ¿puedo hacer una consulta linq arriba con List? –
Goran