如果 T 的属性与数据表中的列名匹配,请选择这些属性并忽略大小写
本文关键字:属性 请选择 大小写 数据表 如果 | 更新日期: 2023-09-27 18:34:52
我有一个泛型函数的一部分,只有当属性信息的名称与其中一个数据表列匹配时,我才需要将属性信息复制到列表中。
DataTable dt = new DataTable();
.
.
.
//here i want only the properties that have the same name of some column in the datatable
List<PropertyInfo> properties = typeof(T).GetProperties().ToList();
如何使用 LINQ 执行此操作?
我试过了
List<PropertyInfo> properties = typeof(T).GetProperties().Where(p=> dt.Columns.Contains(p.Name)).ToList();
但它似乎不是那样工作的,因为我需要忽略两侧属性名称和列名称的大小写
ToUpper(( 和 ToLower(( 函数的问题在于有时列名不是完全小写也不是大写
尝试这样的事情:
List<PropertyInfo> properties = typeof(T).GetProperties().Where(p => dt.Columns.Cast<DataColumn>().Any(c => c.ColumnName.Equals(p.Name, StringComparison.InvariantCultureIgnoreCase))).ToList();