У меня есть метод, который получает строки из моей базы данных. Это выглядит так:
public static IEnumerable<Dictionary<string, object>> GetRowsIter()
{
_resultSet.ReadFirst();
do
{
var resultList = new Dictionary<string, object>();
for (int fieldIndex = 0; fieldIndex < _resultSet.FieldCount; fieldIndex++)
{
resultList.Add(_resultSet.GetName(fieldIndex),
_resultSet.GetValue(fieldIndex));
}
yield return resultList;
} while (_resultSet.ReadRelative(1));
yield break;
}
Это здорово, когда я хочу вернуть все строки. Но иногда я хочу вернуть только некоторые строки.
Я планирую написать свой собственный метод (GetRowsIterWhere(string column, object whereValue)
), но мне интересно, могу ли я использовать linq где в моем методе.
Признаюсь, я не знаю, как это будет работать, потому что я продвигаю читателя с помощью ReadRelative (1), чтобы перейти к следующему значению. Поэтому, даже если он «думает», что пропускает строки, он не пропустит их.
Я действительно обеспокоен производительностью здесь (в настоящее время я занимаюсь рефакторингом из Linq-To-Datasets, потому что он был слишком медленным.)
Итак, мой вопрос: нужно ли мне писать собственный метод типа Where
или я могу изменить вышеописанный метод для работы с методом linq where
?