LINQ avec sous-Requête/Groupe/Rejoindre
Débutant à LINQ, et essayer d'écrire la requête suivante...
select
f.Section_ID,
f.Page_ID,
f.SortOrder,
f.Type
from
(
select
Section_ID,
min(SortOrder) as minSortOrder
from
ContentPages
group by
Section_ID
) as x
inner join
ContentPages as f on
f.Section_ID = x.Section_ID and
f.SortOrder = x.minSortOrder;
Notes:
- 'Section' a 'de nombreuses ContentPages'
- Articles sont commandés par un "SortOrder" champ
- ContentPages sont également commandés par un "SortOrder" champ
Table: Section
Section_ID....Nom.......SortOrder
....1.........Un..........1......
....2.........Deux..........3......
....3.........Trois........2......
Table: ContentPage
Page_ID.......Section_ID.......Titre..............SortOrder
....11.............1.......... Page.............1......
....12.............1...........Page Deux.............3......
....13.............2...........Page Trois...........2......
....16.............2.......... Page Quatre............4......
....17.............2...........Page Huit...........5......
....18.............1...........Page Dix.............6......
La requête ci-dessus pourrait être écrit d'une autre façon, donc voici ce que je suis en train de faire:
- J'ai besoin de retourner une liste de la première ContentPage à l'intérieur de chaque Section (en cas de tri par ContentPage.L'ordre de tri)
- Trier les résultats par Section.SortOrder
- Montrer La Section.Nom (joindre sur Section_ID?) dans le résultat ainsi
2 derniers points ne sont pas couverts par la requête sql ci-dessus et sont plus d'un "gentil"...
Résultat Souhaité
Page_ID.......Section_ID...Nom De Section.....Titre..............SortOrder
....11.............1.........Un......... Page.............1......
....13.............2.........Deux..........Page Trois...........2......
Toute aide est appréciée. Merci!
OriginalL'auteur seekay | 2009-01-13
Vous devez vous connecter pour publier un commentaire.
Voici ma première tentative à elle:
Ce qui se passe est d'abord nous allons créer un groupe sur la section de la pièce d'identité afin que nous puissions obtenir le minimum de l'ordre de tri plus tard. Ensuite, nous nous joignons une nouvelle référence à des pages sur la section id, et filtrer par SortOrder étant le minimum à partir de la section de groupe. Remarque, pour les expressions simples comme le Min() l'appel, je préfère la ligne lambda expression par une autre requête.
Enfin, nous ajoutons un orderby à l'ordre les pages, et de nous renvoyer la page (remarque: vous pouvez la changer pour certains champs si vous préférez).
OriginalL'auteur NilObject
Je pense que c'est ce que vous cherchez...
Noter que l'échantillon de données que vous avez fournies montre un ordre de tri 3 de la section 2, mais votre exemple de liste des résultats de son ordre de tri 2.
OriginalL'auteur GalacticCowboy