1

名前がデータ テーブル列の 1 つと一致する場合にのみ、プロパティ情報をリストにコピーする必要があるジェネリック関数の一部があります。

    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() 関数の問題は、列名が完全に小文字でも大文字でもない場合があることです。

4

1 に答える 1

1

次のようなことを試してください:

List<PropertyInfo> properties = typeof(T).GetProperties().Where(p => dt.Columns.Cast<DataColumn>().Any(c => c.ColumnName.Equals(p.Name, StringComparison.InvariantCultureIgnoreCase))).ToList();
于 2013-10-10T03:29:44.340 に答える