我有一个类,定义了一些设置,其中一个设置是属性分组列表,你想分组:
MySetting类的对象
MySetting setting = new()
{
Groupby = $"{nameof(MyCss.Color)}, {nameof(MyCss.Width)}",
//.....
}
现在我有了一个动态列表,我想把这个列表作为对象setting
的参数发送给一个类似ApplySetting
的方法,这个方法必须检查Groupby
是否不为空,并对我的列表进行分组:
public ApplySetting(List<TItem> myList, MySetting setting)
{
if(setting.Groupby != null)
{
var arr = setting.Groupby.Split(',', StringSplitOptions.RemoveEmptyEntries).ToList();
//do some this like, this wrong !
var groubs = myList.GroupBy(x => arr.ForEach(y => GetPropertyValue(y, x, x.GetType())))
}
}
注:GetPropertyValue
是一个通过反射从对象获取值的方法。
谢谢你的帮助。
1条答案
按热度按时间tktrz96b1#
这不是你要求的反射解决方案,而是黑客,但也许它可以为你服务。它使用lib System.Linq.Dynamic.Core并将列表转换为可查询的。