LINQ to SQL unterstützt nicht Access (dh es gibt keinen Access/Jet-Provider für LINQ), aber Sie können ein DataSet mit LINQ abfragen. Das heißt, Sie füllen Ihr DataSet mit allen möglichen Daten aus Ihrer Datenbank, die Sie möglicherweise in Ihren Ergebnissen benötigen, und filtern dann auf der Client-Seite. Nachdem Sie eine typisierte DataSet, und Sie Fill() mit einem Tableadapter, tun Sie etwas wie folgt aus:
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;
Sie müssen entscheiden, ob dies ist es wert. Sie müssten Ihr DataSet mit alle die Anführungszeichen füllen, dann verwenden Sie LINQ, um nur die Angebote zu filtern, die nach 1995 sind. Für eine kleine Menge von Daten, sicher, warum nicht? Aber für eine sehr große Menge an Daten müssen Sie sicherstellen, dass es nicht zu langsam ist.
Wenn Sie jedoch ein DataSet verwenden, können Sie benutzerdefinierte Abfragen schreiben, die zu neuen TableAdapter-Methoden werden. So können Sie das richtige SQL für Ihre Abfrage in eine FillByYear() -Methode in Ihrem TableAdapter einfügen und diese verwenden, um Ihre typisierte DataTable zu füllen. Auf diese Weise erhalten Sie nur die Daten, die Sie benötigen.
Wenn Sie diesen Weg gehen, denken Sie daran, dass Access/Jet Positionsparameter, nicht benannte Parameter verwendet. Anstatt also
SELECT * FROM Quotes WHERE Year(QuoteDate) > @Year
würden Sie so etwas wie folgt verwenden:
SELECT * FROM Quotes WHERE Year(QuoteDate) > ?
Siehe meine Antwort hier https://stackoverflow.com/questions/295772/query-microsoft-access-mdb-database- using-linq-and-c-sharp/46945250 # 46945250, mit VB.net auf Windows Forms –