我无法使用示例 here因为它特定于提问者使用的结构。
目前,我要去:
PropertyInfo[] props = this.GetType().GetProperties();
foreach (DataColumn dataColumn in dataAsDataRow.Table.Columns)
if( !props.Any(p => p.Name == dataColumn.ColumnName) )
...
我宁愿在一行中包含一些内容,例如:
foreach (DataColumn dataColumn in dataAsDataRow.Table.Columns.Cast<DataColumn>.Except(props) )
...
有什么想法吗?
请您参考如下方法:
var columns = dataAsDataRow.Table.Columns.Cast<DataColumn>().Where(column => !props.Any(p => p.Name == column.ColumnName);
foreach(DataColumn in columns)
....
或略微优化的版本(一如既往,取决于运行时的列数、属性等):
PropertyInfo[] props = this.GetType().GetProperties();
var lookup = new HashSet<string>(props.Select(x=>x.Name));
var columns = dataAsDataRow.Table.Columns.Cast<DataColumn>().Where(column => !lookup.Contains(column.Name));
