Ich habe die folgenden drei Tabellen als Teil eines einfachen "Artikel Tagging" Schema:Linq-Version von SQL "IN" Anweisung
== == Artikel
- ItemId int
- Marke varchar
- Namen varchar
- Preisgeld
- Zustand varchar
- Beschr iption varchar
- Aktiv Bit
== == Stichworte
- TagId int
- Namen varchar
- Aktiv Bit
== == TagMap
- TagMapId int
- TagId int (fk)
- ItemId int (fk)
- Aktiv Bit
Ich möchte eine LINQ-Abfrage schreiben Artikel zurück zu bringen, die eine Liste von Tags entsprechen (z TagId = 2,3,4,7). In meinem Anwendungskontext wären Beispiele für Gegenstände "Computer Monitor", "Smoking Shirt", "Gitarre" usw. und Beispiele für Tags wären "Elektronik", "Kleidung" usw. Ich würde dies normalerweise mit einem SQL erreichen IN-Anweisung.
Warum die innere join ist hier nicht bevorzugt? Sie wissen, wenn die Context.TagMaps 10 Datensätze enthält, wird es 36-mal im Hintergrund iterieren, unabhängig davon, ob es eine Übereinstimmung gibt oder nicht. – Pankaj
Sie können [SQL-Abfragen in LINQ] (http://www.codeducky.org/sql-queries-in-linq/#where-in) hilfreich finden. Es ist eine Liste der häufigsten SQL-Abfragen in LINQ. –