C# “得到例外”;枚举尚未开始或已完成";尝试从数据集获取列时

C# “得到例外”;枚举尚未开始或已完成";尝试从数据集获取列时,c#,linq-to-sql,C#,Linq To Sql,我正在尝试使用linq过滤数据集。它工作得很好 问题: 但我试着从这里得到这个列,它给了我一个例外 枚举尚未开始或已完成。 这是我的密码: foreach (string columnName in SelectedItems) { var Rate = (from dr in ds.Tables[0].AsEnumerable() where dr.Field

我正在尝试使用linq过滤数据集。它工作得很好

问题:

但我试着从这里得到这个列,它给了我一个例外

枚举尚未开始或已完成。

这是我的密码:

foreach (string columnName in SelectedItems)
                {
                    var Rate = (from dr in ds.Tables[0].AsEnumerable()
                                where dr.Field<double>(columnName) > greater && dr.Field<double>(columnName) < less
                                select new
                                {
                                    rate = dr.Field<double>(columnName)

                                }.rate).ToList();
                    if (Rate.Count > 50)
                    {
                        var avg = Rate.CheckRateValue();

                    }


                    i++;
                }
foreach(SelectedItems中的字符串columnName)
{
var Rate=(来自ds.Tables[0]中的dr.AsEnumerable()
其中dr.Field(columnName)>较大值和dr.Field(columnName)<较小值
选择新的
{
速率=dr.字段(columnName)
}.rate);
如果(速率计数>50)
{
var avg=速率。CheckRateValue();
}
i++;
}
我在web上搜索并发现dr.Field(columnName)必须一次性使用的问题。因此,在从“选择新”部分跳过此代码后,如何从linq查询中获取列。

我不确定这是否是您的实际问题,但您可以尝试:

var rates = (from dr in ds.Tables[0].AsEnumerable()
             let rate = dr.Field<double>(columnName)
             where rate > greater && rate < less
             select rate).ToList();
var rates=(来自ds.Tables[0]中的dr.AsEnumerable()
let rate=dr.Field(columnName)
其中速率>较大值和速率<较小值(&R)
选择rate).ToList();
我不确定这是您的实际问题,但您可以尝试:

var rates = (from dr in ds.Tables[0].AsEnumerable()
             let rate = dr.Field<double>(columnName)
             where rate > greater && rate < less
             select rate).ToList();
var rates=(来自ds.Tables[0]中的dr.AsEnumerable()
let rate=dr.Field(columnName)
其中速率>较大值和速率<较小值(&R)
选择rate).ToList();

当我将查询更改为var Rate=(来自boundTable.AsEnumerable()中的dr)时,如果选择新的{Rate=dr.Field(columnName),那么它就可以工作了,而不是
ds.Tables[0]。AsEnumerable()
您可以
ds.Tables[0]…AsEnumerable().ToList()
?当我将查询更改为var Rate=(来自boundTable.AsEnumerable()中的dr)时,是否确实没有从itterating
SelectedItems
中得到错误?如果我将查询更改为var Rate=(来自boundTable.AsEnumerable(),请选择新的{Rate=dr.Field(columnName),然后它就可以工作了,而不是
ds.Tables[0]。AsEnumerable()
ds.Tables[0]…AsEnumerable().ToList()?您能确认错误出现在哪一行吗?当您单步执行此代码时,它会执行并在foreach完成后得到错误,还是发生在代码中的特定行上?当我将查询更改为var Rate=(来自boundTable.AsEnumerable()中的dr)选择新{rate=dr.Field(columnName)那么它可以工作了吗?您可以确认错误出现在哪一行吗?当您单步执行此代码时,它是否执行并在foreach完成后得到错误,还是发生在代码中的特定行上?当我将查询更改为var Rate=(来自boundTable.AsEnumerable()中的dr)选择new{rate=dr.Field(columnName),它就会工作