Помощь по расширению Where () (этот источник IEnumerable <CUSTOMERRow>, предикат Func <CUSTOMERRow, bool>) - PullRequest
0 голосов
/ 16 декабря 2009

Использование Oracle® Data Provider для .NET для создания строго типизированных наборов данных.

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

Параметры для расширения Where ():

(this IEnumerable<CUSTOMERRow> source, Func<CUSTOMERRow, bool> predicate)

Кодовый блок, в котором должен использоваться делегат:

StronglyTypedDataSet myDataSet = new StronglyTypedDataSet();

CUSTOMERTableAdapter tableAdapter = new CUSTOMERTableAdapter();
tableAdapter.Fill(myDataSet.CUSTOMER.Where(newfunctionhere));

Ответы [ 2 ]

1 голос
/ 16 декабря 2009

Метод Where можно использовать для фильтрации содержимого коллекции. Но в вашем случае вы используете адаптер таблицы, чтобы заполнить пустой DataTable, и вызываете Где в пустой коллекции просто возвращает пустую последовательность ... А адаптер таблицы не знает, как интерпретировать вызов Where , он просто использует свой SelectCommand для заполнения таблицы. Таким образом, вы не можете использовать Linq, чтобы определить, какие данные вы хотите загрузить в таблицу. Но как только ваша таблица заполнена, вы можете использовать Where для фильтрации результатов, например:

var rows = myDataSet.CUSTOMER.AsEnumerable().Where(cr => cr.SomeProperty == someValue);
1 голос
/ 16 декабря 2009

В C # в качестве функции обычно используется лямбда-выражение. I.E.:

tableAdapter.Fill(myDataSet.CUSTOMER.Where(c => c.LastName == "Smith"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...