LINQ to SQL no admite Access (es decir, no hay un proveedor de acceso/Jet para LINQ), pero puede consultar un DataSet con LINQ. Esto significa que usted llena su DataSet con cualquier información posible de su base de datos que pueda necesitar en sus resultados, y luego filtra por el lado del cliente. Después de tener un conjunto de datos con tipo, y llenarte() con un TableAdapter, que hacer algo como esto:
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;
Vas a tener que decidir si esto vale la pena. Tendrías que completar tu DataSet con todas las cotizaciones, luego usar LINQ para filtrar solo aquellas citas posteriores a 1995. Para una pequeña cantidad de datos, claro, ¿por qué no? Pero para una gran cantidad de datos, deberá asegurarse de que no sean demasiado lentos.
Sin embargo, si usa un DataSet, puede escribir consultas personalizadas que se conviertan en nuevos métodos TableAdapter. De modo que puede colocar el SQL correcto para su consulta en un método FillByYear() en su TableAdapter y usarlo para llenar su DataTable con tipeo. De esta forma, solo obtendrá los datos que necesita.
Si sigue esta ruta, recuerde que Access/Jet usa parámetros posicionales, parámetros no nombrados. Así que en lugar de
SELECT * FROM Quotes WHERE Year(QuoteDate) > @Year
que tendría que utilizar algo como esto:
SELECT * FROM Quotes WHERE Year(QuoteDate) > ?
Ver mi respuesta aquí https://stackoverflow.com/questions/295772/query-microsoft-access-mdb-database- using-linq-and-c-sharp/46945250 # 46945250, usando VB.net en Windows Forms –