如果它们匹配数据表中的列名并忽略大小写,则选择T的属性

时间:2013-10-10 03:13:52

标签: c# linq

我有一个泛型函数的一部分,我需要将属性信息复制到列表,只要它的名称与其中一个数据表列相匹配。

    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()函数的问题有时候列名不是完全小写也不是大写

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

List<PropertyInfo> properties = typeof(T).GetProperties().Where(p => dt.Columns.Cast<DataColumn>().Any(c => c.ColumnName.Equals(p.Name, StringComparison.InvariantCultureIgnoreCase))).ToList();