System.Linq.Dynamic левое внешнее соединение (метод IQueryable)
У меня есть одна проблема, и я надеюсь, что вы можете объяснить мне решение!
Я хочу сделать левое внешнее соединение между двумя динамическими классами. Я генерирую два класса во время выполнения и добавляю его конфигурацию в entityContext:
public DbModelBuilder AddEntityConfiguration<T>(string className, List<ColumnMetadata> columns, DbModelBuilder builder) where T : class
{
var configuration = (EntityTypeConfiguration<T>)Activator.CreateInstance(typeof(DynamicViewConfiguration<>).MakeGenericType(typeof(T)), className, columns);
builder.Configurations.Add(configuration);
return builder;
}
После этого я вызываю GetDynamicQueryResults (используйте для этого invoke):
public IQueryable<T> GetDynamicQueryResults<T>(string className, List<ColumnMetadata> columns, DbModelBuilder builder, ref MainContext context) where T : class
{
return context.GetDynamicQueryResults<T>(className);
}
В ВМ я пишу это:
var specificGeneric = typeof (IQueryCatalogDynamic).GetMethod("GetDynamicQueryResults").MakeGenericMethod(dynamicClass.GetType());
var specifications = specificGeneric.Invoke(repository,new object[] { dynamicClass.GetType().Name, _fields, builder, context });
var cfosGeneric = typeof (IQueryCatalogDynamic).GetMethod("GetDynamicQueryResults").MakeGenericMethod(dynamicClass2.GetType());
var cfos = cfosGeneric.Invoke(repository,new object[] {dynamicClass2.GetType().Name, _fields, builder, context});
оно работает. Желание сделать левое внешнее соединение между спецификациями и cfos. Я нахожу решение для этого: как сделать левое внешнее соединение с Dynamic Linq?
но как я могу добавить DefaultIfEmpty() для интерфейса IEnumerableSignatures? теперь у меня есть исключение:
Исключение типа "System.Linq.Dynamic.ParseException" произошло в System.Linq.Dynamic.dll, но не было обработано в коде пользователя
Дополнительная информация: не существует применимого статистического метода DefaultIfEmpty
Я надеюсь, что кто-то знает решение.