System.Linq.Dynamic左外连接(IQueryable方法)

时间:2015-08-17 10:57:55

标签: c# linq join defaultifempty

我有一个问题,我希望你能解释一下我的解决方案!

我想在两个动态类之间进行左外连接。我在运行时生成两个类,并将其配置添加到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);
}

在Vm我写这个:

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之间进行左外连接。我找到了解决方案:How do I do a left outer join with Dynamic Linq?

但是如何将DefaultIfEmpty()添加到接口IEnumerableSignatures? 现在我有例外:

类型&#39; System.Linq.Dynamic.ParseException&#39;的例外情况发生在System.Linq.Dynamic.dll中但未在用户代码中处理

其他信息:没有适用的汇总方法&#39; DefaultIfEmpty&#39;存在

我希望有人知道解决方案。

0 个答案:

没有答案