データリーダーからの値で辞書を埋めるには、次の方法があります。データリーダーフィールドとメソッドに渡されるプロパティの間にケースの不一致がある可能性があります。次の方法では、この問題に対処するために、最初にプロパティを小文字に変換しています。これにより、2つの辞書が作成されます。1つの辞書でこれを達成するためのより良い方法はありますか?
private Dictionary<string, object> FillDictionaryWithReaderValues(List<string> propertiesOfAllEntities, IDataReader reader)
{
Dictionary<string, object> lowerCaseDictionary = new Dictionary<string, object>();
Dictionary<string, object> propertyResultList = new Dictionary<string, object>();
foreach (var item in propertiesOfAllEntities)
{
lowerCaseDictionary.Add(item.ToLower(), null);
}
for (int i = 0; i < reader.FieldCount; i++)
{
lowerCaseDictionary[reader.GetName(i).ToLower()] = reader[i];
}
foreach (var item in propertiesOfAllEntities)
{
propertyResultList.Add(item, lowerCaseDictionary[item.ToLower()]);
}
return propertyResultList;
}