C#匿名类型的foreach循环
-
19-09-2019 - |
题
我需要循环通过说我从数据库中取回并且仅显示包含数据的列的自定义对象类型的属性。 这意味着我不能对象的列表只是绑定到数据网格。 我不通过每个对象要循环,看看列是空/空,并在UI确定要显示它。 我在想什么是我的业务层之前,我发送的对象后,我会送一个IEnumerable回来只有那些应该是可见的列。因此,我想使用LINQ to Object要做到这一点,但我不知道那将是非常漂亮的。
有谁知道,我可以用没有吨的IF语句,我可以做些什么来通过大对象(30左右列)检查,以确定哪些应该显示或者不解决的。
Foreach (CustomerData customerdata in Customers)
{
if (!customerdata.address.Equals(""))
{
dgvCustomerData.Column["Address"].visible = false;
}
//Continue checking other data columns...
}
我希望避免在用户界面和所有的国际单项体育联合会这一切...... 我有在这一个大脑放屁任何人都可以帮我吗?
由于
解决方案
看一看的NET反射库。您可以使用反射来得到阿霍德对象的所有属性,并依次通过他们,看看他们是否是空或不是。然后,你可以返回KeyValuePair对象的集合,其中关键=属性名称和值=真/假。然后,您应该使用keyvaluepairs设置列的知名度......
其他提示
您可以做简化它下面的一个位
Action<T,string> del = (value,name) => {
if ( value.Equals("") ) {
dgvCustomerData.Column[name].Visible = false;
}
};
foreach ( var data in Customers ) {
del(data.address,"Address");
del(data.name, "Name");
...
}
不隶属于 StackOverflow