J'ai une jointure externe gauche (ci-dessous) renvoyant les résultats comme prévu. Je dois limiter les résultats de la "bonne" table au "premier" hit. Est-ce que je peux faire ça? Actuellement, je reçois un résultat pour chaque enregistrement dans les deux tableaux, je veux seulement voir un résultat de la table sur la gauche (items), peu importe le nombre de résultats que j'ai dans la bonne table (photos).Comment limiter une jointure externe gauche LINQ à une ligne
var query = from i in db.items
join p in db.photos
on i.id equals p.item_id into tempPhoto
from tp in tempPhoto.DefaultIfEmpty()
orderby i.date descending
select new
{
itemName = i.name,
itemID = i.id,
id = i.id,
photoID = tp.PhotoID.ToString()
};
GridView1.DataSource = query;
GridView1.DataBind();
J'aime l'élégance de cette solution, mais je pense que cela peut créer une requête qui est plus difficile pour SQL à optimiser en raison du sous-select –
I vérifié et était heureux à la fois avec le SQL généré et le plan d'exécution estimé. La sous-sélection devait être une jointure externe gauche. –
cool toute chance que vous pouvez poster le SQL, je suis curieux de le voir. –