Gor*_*ran 5 linq dynamic c#-4.0
我有List MyBox:DynamicObject.MyType继承自DynamicObject的原因是我需要一个可以包含未知数量属性的类型.
一切正常,直到我需要过滤List.有没有办法可以做一个像这样做的linq:
return all items where any of the properties is empty string or white space?
Run Code Online (Sandbox Code Playgroud)
只要每个对象的属性在内部不是未知的,您就可以做到。
没有一种很好的通用方法来测试动态对象的所有属性,如果您无法控制您DynamicObject希望实现者实现的属性GetDynamicMemberNames(),那么您可以使用 nuget 包 ImpromptuInterface 的方法来获取属性名称并动态调用这些属性名字。
return allItems.Where(x=> Impromptu.GetMemberNames(x, dynamicOnly:true)
.Any(y=>String.IsNullOrWhiteSpace(Impromptu.InvokeGet(x,y));
Run Code Online (Sandbox Code Playgroud)
否则,由于它是您自己的类型,MyType您可以添加自己的方法来查看这些成员值的内部核算。
return allItems.Where(x => x.MyValues.Any(y=>String.IsNullOrWhitespace(x));
Run Code Online (Sandbox Code Playgroud)