LINQ to SQL ne prend pas en charge Access (c'est-à-dire qu'il n'y a pas de fournisseur Access/Jet pour LINQ), mais vous pouvez interroger un DataSet avec LINQ. Cela signifie que vous remplissez votre DataSet avec toutes les données possibles de votre base de données dont vous pourriez avoir besoin dans vos résultats, puis vous filtrez du côté client. Une fois que vous avez un DataSet typé, et vous remplissez() avec un TableAdapter, vous faire quelque chose comme ceci:
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;
Vous devez décider si cela vaut la peine. Vous devez remplir votre DataSet avec tous les guillemets, puis utiliser LINQ pour filtrer uniquement les guillemets qui sont après 1995. Pour une petite quantité de données, bien sûr, pourquoi pas? Mais pour une très grande quantité de données, vous devrez vous assurer que cela ne sera pas trop lent.
Si vous utilisez un DataSet, vous pouvez cependant écrire des requêtes personnalisées qui deviennent de nouvelles méthodes TableAdapter. Vous pouvez donc placer le SQL correct pour votre requête dans une méthode FillByYear() dans votre TableAdapter et l'utiliser pour remplir votre DataTable typé. De cette façon, vous récupérez uniquement les données dont vous avez besoin.
Si vous suivez cette route, rappelez-vous qu'Access/Jet utilise des paramètres de position, et non des paramètres nommés. Ainsi, au lieu de
SELECT * FROM Quotes WHERE Year(QuoteDate) > @Year
vous utiliseriez quelque chose comme ceci:
SELECT * FROM Quotes WHERE Year(QuoteDate) > ?
Voir ma réponse ici https://stackoverflow.com/questions/295772/query-microsoft-access-mdb-database- En utilisant-linq-and-c-sharp/46945250 # 46945250, en utilisant VB.net sur Windows Forms –