2

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++;
                }

私はWebで検索し、dr.Field(columnName)を1回だけ使用する必要があるという問題を見つけました。新しいセクションの選択からこのコードをスキップした後、linqクエリから列を取得するにはどうすればよいですか。

4

1 に答える 1

0

それがあなたの実際の問題かどうかはわかりませんが、試すことができます:

var rates = (from dr in ds.Tables[0].AsEnumerable()
             let rate = dr.Field<double>(columnName)
             where rate > greater && rate < less
             select rate).ToList();
于 2012-05-17T12:10:08.337 に答える