Самое простое решение - заставить каждый контекст реализовать один и тот же интерфейс, например:
public interface IBillContext
{
DbSet<Bill> bill { get; }
}
Теперь заставьте свои контексты реализовать его:
public class Company1_Entities : IBillContext
{
public DbSet<Bill> bill { get; set; }
//etc...
}
И, наконец, измените свой списокчтобы использовать интерфейс:
Dictionary<string, IBillContext> lstDB = new Dictionary<string, IBillContext>();
В качестве альтернативы, если вы знаете тип, вы можете использовать свойство Set<T>
.Например, если предположить, что тип сущности равен Bill
:
foreach (var record in currentDB.Set<Bill>().ToList())
{
if(record.merchant == dataBaseInfo.Key /* && other Conditions */)
{
main_db.bill.Add(record)
}
}
Конечно, во время выполнения произойдет сбой, если вы добавите сущность в словарь, у которого нет этого DbSet.