首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Entity Framework/C#:从字符串数组中包含多个?

Entity Framework/C#:从字符串数组中包含多个?
EN

Stack Overflow用户
提问于 2013-12-02 21:23:50
回答 4查看 2.6K关注 0票数 3

如果想要在某些实体框架选择上使用Include()方法(为了避免“Object as been disposed”异常)。但是Include只接受一个字符串作为参数,这意味着只有一个include。要执行多个include,必须链接includes .Include("something").Include("something").Include("something")

但我希望我的包含来自字符串数组。

所以我想要写的是.Include(array[0]).Include(array[1]).Include(array[2])...Include(array[n])的等价物

(其中'n‘= array.Length - 1)

当然,我事先不知道字符串数组中会有什么。

但到目前为止,我找不到正确的语法。谢谢你的帮助

编辑:鉴于我到目前为止已经得到的建议,我想说的是,请准确地使用类型并避免空值问题,并对其进行测试。到目前为止,似乎还没有有效的解决方案,我迷失在这样或那样的类型中我能做什么,不能做什么。

EN

回答 4

Stack Overflow用户

发布于 2013-12-02 21:56:23

您可以使用params string[],这将使您的代码更加清晰:

代码语言:javascript
复制
public static IQueryable<T> Include<T>(this IDbSet<T> dbSet, params string[] includes) where T : class
{
    foreach (var include in includes)
        dbSet.Include(include);

    return dbSet;
}

然后,您可以通过两种方式使用它:

代码语言:javascript
复制
.Include("NavProp1", "NavProp2", "NavProp3");

和:

代码语言:javascript
复制
.Include(new[] { "NavProp1", "NavProp2", "NavProp3" });
票数 3
EN

Stack Overflow用户

发布于 2013-12-02 21:34:43

代码语言:javascript
复制
    public IEnumerable<T> GetDataWithIncludes<T>(string[] includes) where T: class, new()
    {
        DbQuery<T> dbQuery = null;
        DbSet<T> dbSet = this.Set<T>();
        foreach (string include in includes)
        {
            dbQuery = dbSet.Include(include);
        }

        return dbQuery.AsEnumerable();
    }
票数 1
EN

Stack Overflow用户

发布于 2013-12-02 21:31:46

您可以始终将它们链接在一个循环中:

代码语言:javascript
复制
var query = DataSource.Select(...).Where(...); // as IQueryable<T>
foreach(string include in includes)
{
   query = query.Include(include);
}

return query.ToList(); // materialize
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20329407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档