C # - фильтрация с помощью DataView - PullRequest
0 голосов
/ 14 мая 2011

У меня есть набор данных, полный информации о заказе, и я пытаюсь отфильтровать набор данных с помощью DataView.

Это то, что я имею до сих пор. Это возвращает все столбцы в DataSet.

DataTable orders = dataSet.Tables[0];

EnumerableRowCollection<DataRow> query = from order in orders.AsEnumerable()
                                     where order.Field<Int16>("OrderID") = 2 
                                     select order;

DataView view = query.AsDataView();

Что я хочу сделать, так это чтобы запрос возвращал только некоторые столбцы, а не все. Что мне делать?

Ответы [ 2 ]

4 голосов
/ 14 мая 2011

Используйте анонимные типы в вашем запросе:

DataTable orders = dataSet.Tables[0];

EnumerableRowCollection<DataRow> query = from order in orders.AsEnumerable()
                                     where order.Field<Int16>("OrderID") = 2 
                                     select new { Property1, Property2 };

DataView view = query.AsDataView();
0 голосов
/ 15 мая 2011

Возможно, вам следует рассмотреть возможность использования возможностей самого DataView вместо использования своего рода обходного решения LINQ:

var filter = new DataView(orders);
filter.RowFilter = "OrderID = 2";
var resultTable = filter.ToTable(false, "Column1", "Column2", "Column3");

Метод ToTable() позволяет указать произвольный списокстолбцы для создания новой таблицы.Конечно, вы все еще можете обернуть таблицу результатов в другой DataView, если вам нужно вернуть ее вместо таблицы:

var resultView = new DataView(resultTable);
...