在LoadProperty或Include中过滤

时间:2011-11-09 10:16:21

标签: entity-framework-4

LoadProperty或Include从主体实体中检索所有关联行。如何过滤从LoadProperty调用中检索到的行?我不希望从DB中进行数据恢复的后处理。

我的情况是这样的

public Expression<Func<TipoReforma, bool>> predicadoFiltroIdioma(String filtro)
    {
    return x => x.DetalleTipoReforma.Any(y=>filtro.Contains(y.Idioma.idioma));
    }


IEnumerable<T> resultado = objectSet.Where<T>(predicadoFiltroIdioma("en");
Contexto.LoadProperty(resultado.ToList()[0], "DetalleTipoReforma");

我只想要“TipoReforma”,但相关信息应该只是那些idioma是“x”。

提前致谢,

1 个答案:

答案 0 :(得分:0)

LoadPropertyInclude都不支持过滤=它们始终加载所有相关实体。你必须使用不同的方法。您可以尝试使用CreateSourceQuery。类似的东西:

var data = ((EntityCollection<TipoReforma>)resultado.ToList[0].DetalleTipReforma)
                .CreateSourceQuery().OrderBy(predicadoFiltroIdioma).ToList();

它还应填充主体中的导航属性。在执行此代码之前,请确保关闭延迟加载。