Я использую Linq to Sql с Predicate Builder и пытаюсь оптимизировать, сколько информации извлекается из базы данных. Я хотел бы выбрать только определенные поля, чтобы отображать их в gridview. Когда я выбираю только то, что хочу, параметры поиска, которые я добавляю (см. Ниже), не работают, и PredicateBuilder тоже не работает. Вот то, что я сейчас делаю (это работает, но получает все то, что слишком много информации)Linq to Sql - Выберите только определенную информацию (w/Predicate Builder)
' Initial Setup '
Dim db As New MyDataContext()
Dim results = From p In db.Products _
Select p
' Search '
If (testCase) Then
results = results.Where(Function(p) p.SomeAttribute = 123)
End If
Если я изменяю, что только выбрать то, что мне нужно, как это:
Dim results = From p In db.Products _
Select p.Name, p.SomethingElse
затем Я заметил, что если информация выбрана (т. Е. Я выбираю p.SomeAttribute), то я могу выполнить поиск (добавить предложение where) по этому атрибуту, но если это не так, я не могу. И с построителем предикатов он работает только, если я выбираю весь элемент (т. Е. Выбираю p). Все это должно заключаться в создании операторов SQL, которым не нужно выбирать атрибут для его поиска. Как я могу заставить это работать и выбирать только то, что мне нужно, но искать что-нибудь и поддерживать работу предшественника? Любая помощь МНОГО ПРИЗНАВАЕТСЯ! Спасибо
Привет, я уже пробовал это, и он дает эту ошибку: Невозможно наложить объект типа 'System.Data.Linq.DataQuery'1 [VB $ AnonymousType_0'3 [System.Int32, System.Int32, System .String]] 'для ввода' System.Linq.IQueryable'1 [MyNamespace.Product] '. Любые идеи вокруг этого? – Ryan
В моем примере была ошибка, которая даст эту ошибку - я обновил пример, чтобы исправить ошибку. –
Я получил это сразу после того, как прокомментировал это, извините. Но ваше решение именно то, что я искал. Благодаря! – Ryan