Фильтровать DataTable без LINQ? - PullRequest
       11

Фильтровать DataTable без LINQ?

1 голос
/ 29 августа 2011

Как я могу отфильтровать данные без использования LINQ? Я использую .NET 2.0; поэтому я не могу использовать LINQ. У меня есть хранимая процедура, которая возвращает пары номер / тариф. Я хочу отфильтровать данные, чтобы он выбрал все тарифы для конкретной комнаты, по сути, что-то вроде этого:

SELECT Rates FROM TABLE1 WHERE Room = @Room.

Могу ли я сделать это с помощью DataTable или лучше просто создать другую хранимую процедуру, чтобы избежать использования встроенного sql?

Ответы [ 3 ]

3 голосов
/ 29 августа 2011

Вы можете использовать свойство фильтра вида по умолчанию, например:

dt.DefaultView.RowFilter = "SomeColumn > 0";    
dt = dt.DefaultView.ToTable();

Вы также можете использовать метод Select:

dt = dt.Select("SomeColumn > 0").CopyToDataTable();
2 голосов
/ 29 августа 2011

Конечно, хранимой процедурой будет путь, учтите, что вы можете также установить для параметра значение NULL в хранимой, так что вы игнорируете его, когда он равен нулю, или используете его, когда ему присваивается значение.

со стороны .NET вы также можете выбрать подмножество DataRows DataTable, которые удовлетворяют условию фильтра, примерно так:

DataRow[] rows = myTable.Select("Room = '1'");

но, как я уже сказал, фильтрация на стороне сервера лучше, меньше данных перемещается в сети ....

2 голосов
/ 29 августа 2011

вы МОЖЕТЕ сделать это с помощью метода выбора DataTable

// if table is your DataTable
DataRow[] foundRows =table.Select("Room = " + roomName);

, как для принятия решения, если вы хотите сделать это таким образом, или лучше переписать вашу хранимую процедуру, чтобы принять @Это зависит от параметра комнаты: если общее количество строк невелико и вы часто меняете выбранную комнату, то, возможно, было бы лучше с точки зрения производительности сделать это так, как вы делаете (сохранить одну общую таблицу данных в памяти и выполнить фильтрацию).это для разных комнат)

...