EF6 -使用List>来包含对象
本文关键字:object 对象 包含 使用 List Func EF6 | 更新日期: 2023-09-27 18:14:41
我想通过"Funcs"而不是字符串来查询Include
对象。这次我这样做(pagedListFunc.Includes
是List<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
?
参数的正确类型是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);