Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试遍历Queryable时出错_C#_Linq_Entity Framework_Entity Framework 6_Iqueryable - Fatal编程技术网

C# 尝试遍历Queryable时出错

C# 尝试遍历Queryable时出错,c#,linq,entity-framework,entity-framework-6,iqueryable,C#,Linq,Entity Framework,Entity Framework 6,Iqueryable,将抛出已经有一个与此命令关联的打开的DataReader,必须先关闭。异常,但在添加.ToList()时不会发生 到目前为止,我已经到处寻找,但还没有找到满意的答案。所以我的问题是: 除了添加.ToList(),还有其他方法可以做到这一点吗 如果使用.ToList()作为解决方案,在投入生产时是否会导致性能问题?因为AFAIKToList()将尝试加载内存中的所有内容 我的实体中有很多导航属性,请问ToList()是否尝试加载导航属性中的所有内容 谢谢 除了添加.ToList()之外,还有其他方

将抛出
已经有一个与此命令关联的打开的DataReader,必须先关闭。
异常,但在添加
.ToList()
时不会发生

到目前为止,我已经到处寻找,但还没有找到满意的答案。所以我的问题是:

  • 除了添加
    .ToList()
    ,还有其他方法可以做到这一点吗
  • 如果使用
    .ToList()
    作为解决方案,在投入生产时是否会导致性能问题?因为AFAIK
    ToList()
    将尝试加载内存中的所有内容
  • 我的实体中有很多导航属性,请问
    ToList()
    是否尝试加载导航属性中的所有内容
  • 谢谢

    除了添加.ToList()之外,还有其他方法吗

    我猜在您的连接中,字符串可能是
    ToList()
    的一种替代方法

    如果使用.ToList()作为解决方案,在投入生产时是否会导致性能问题

    这取决于数据库中不同用户名的数量

    因为AFAIK ToList()将尝试加载内存中的所有内容

    它将尝试在内存中加载所有不同的用户名

    我的实体中有很多导航属性,ToList()会尝试加载导航属性中的所有内容吗

    否,它将执行适当的查询并在用户名列上进行投影

    嗯,这是一个很好的实践

    除了添加.ToList()之外,还有其他方法吗

    我猜在您的连接中,字符串可能是
    ToList()
    的一种替代方法

    如果使用.ToList()作为解决方案,在投入生产时是否会导致性能问题

    这取决于数据库中不同用户名的数量

    因为AFAIK ToList()将尝试加载内存中的所有内容

    它将尝试在内存中加载所有不同的用户名

    我的实体中有很多导航属性,ToList()会尝试加载导航属性中的所有内容吗

    否,它将执行适当的查询并在用户名列上进行投影


    嗯,好的做法是

    什么是客户?当你使用foreach时,为什么还要费心做一个
    ToList()
    (这样你就可以枚举你所有的
    用户名了?\u cust是一个
    DbSet
    。没有
    。ToList()
    ,它将引发异常
    已经有一个与此命令相关联的打开的DataReader,必须首先关闭。
    请参见此1。我认为错误发生在计算_cust时。在这一上下文中,执行时间似乎很重要(这一行中的toList->after execution vs foreach()->)2.toList()将枚举查询,foreach也会枚举。3.这取决于您的查询,意思是:上下文打开了多长时间?是否包含任何内容?是否使用AsNoTracking()?您所说的“计算_cust”是什么意思?什么是_cust?它背后是什么查询?正如您所知,任何查询都只会在需要值时执行,这意味着您必须计算值,因为您使用的是ToList()、foreach()、First()或其他任何东西。什么是_cust?当您使用foreach时,为什么要费心制作一个
    ToList()
    (那么您是否枚举了所有
    用户名
    s?\u cust是一个
    DbSet
    。没有
    。ToList()
    ,它将引发异常
    已经有一个与此命令相关联的打开的DataReader,必须首先关闭。
    请参见此1。我认为错误发生在计算_cust时。在这一上下文中,执行时间似乎很重要(这一行中的toList->after execution vs foreach()->)2.toList()将枚举查询,foreach也会枚举。3.这取决于您的查询,意思是:上下文打开了多长时间?是否包含任何内容?是否使用AsNoTracking()?您所说的“计算_cust”是什么意思?什么是_cust?它后面是什么查询?正如您所知,任何查询都只会在需要值时执行,这意味着您必须计算该值,因为您使用的是ToList()、foreach()、First()或其他。
    foreach(var name in _cust.Select(s => s.Username).Distinct())
    {
        var x = _cust.Select(s => s.Username == name); //ERROR HERE
        //rest of the code here
    }