EF6 -使用List>来包含对象

本文关键字:object 对象 包含 使用 List Func EF6 | 更新日期: 2023-09-27 18:14:41

我想通过"Funcs"而不是字符串来查询Include对象。这次我这样做(pagedListFunc.IncludesList<string>):

foreach (var include in pagedListFunc.Includes)
{
    query = query.Include(include);
}

我想使用这个列表:

IncludeFuncs = new List<Func<Dicts, object>>()
{
    x => x.AspNetUsers,
    x => x.DictDomains
};

当我尝试使用pagedListFunc。IncludeFuncs(实际上,它在上面的列表:List<Func<T, object>>):

foreach (var include in pagedListFunc.IncludeFuncs)
{
    query = query.Include(x => include(x)); // doesn't work
    // or
    query = query.Include(include); // wrong parameter error
}

如何正确使用IncludeFuncs ?

EF6 -使用List<Func<T, object>>来包含对象

参数的正确类型是Expression<Func<T, object>>,这意味着您的IncludeFuncs必须是文档中规定的List<Expression<Func<Dicts, object>>()类型。

作为旁注,这里不是使用List,而是使用params关键字和一个简单数组。使用这种方法,您可以在调用方法时指定可变数量的参数。

它看起来像这样,例如(伪代码):

public Dicts GetById(int id, params Expression<Func<Dicts, object>>[] includeProps)
{
    ...
    foreach(var include in includeProps)
    {
        query = query.Include(include);
    }
    ...
}

用法:

GetById(1, x => x.AspNetUsers, x => x.DictDomains);

相关文章: