LINQ do SQL nie obsługuje Access (to znaczy, że nie ma dostawcy Access/Jet dla LINQ), ale można zapytać o zestaw DataSet za pomocą LINQ. Oznacza to, że wypełniasz DataSet wszystkimi możliwymi danymi z bazy danych, które mogą być potrzebne w wynikach, a następnie filtrujesz po stronie klienta. Po masz wpisany DataSet, a Fill() to z TableAdapter, można zrobić coś takiego:
var year = 1995; // you can pass the year into a method so you can filter on any year
var results = from row in dsQuotes
where row.QuoteDate > year
select row;
będziesz musiał zdecydować, czy to jest warte. Będziesz musiał wypełnić swój zestaw danych za pomocą wszystkich cytatów, a następnie użyć LINQ do filtrowania tylko tych cytatów, które są po 1995 roku. Na niewielką ilość danych, na pewno, dlaczego nie? Ale w przypadku bardzo dużej ilości danych musisz się upewnić, że nie będzie zbyt wolny.
Jeśli używasz DataSet, możesz pisać niestandardowe zapytania, które stają się nowymi metodami TableAdapter. Możesz więc umieścić poprawny kod SQL dla swojego zapytania w metodzie FillByYear() w swoim TableAdapter i użyć go do wypełnienia wpisanej DataTable. W ten sposób odzyskasz tylko te dane, których potrzebujesz.
Jeśli wybierzesz tę trasę, pamiętaj, że Access/Jet używa parametrów pozycyjnych, nie nazwanych parametrów Więc zamiast
SELECT * FROM Quotes WHERE Year(QuoteDate) > @Year
chcesz użyć czegoś takiego:
SELECT * FROM Quotes WHERE Year(QuoteDate) > ?
Zobacz moją odpowiedź tutaj https://stackoverflow.com/questions/295772/query-microsoft-access-mdb-database- używając-linq-and-c-sharp/46945250 # 46945250, używając VB.net na Windows Forms –