Problème: Vous cherchez à sélectionner 1 rangée de chaque typegroupe Linq-select de date spécifique
Tableau: EntryPrices
AttendingTypesId (int)
Nom (nvarchar)
Prix (int)
GroupId (int)
FromDate (DateTime) // aaaa-mm-jj
Sample: entrée de base - 100 - 1 - 01/08/2012
entrée de commanditaire - 350-2 - 2012-08 -01
entrée du personnel - 70 - 3 - 01/08/2012
entrée de base - 150 - 1 - 01/10/2012
entrée de base - 200 - 1 - 2012-12-01
Comme vous pouvez le voir, il y a 3 entrées de base. Chacun est valide selon la date à laquelle ils se sont inscrits. Donc, si une personne inscrit à la mi-septembre, il obtient pour 100 mi 150 Novembre et fin 200. Décembre
Cependant je veux obtenir le prix « valide » en fonction de la date d'aujourd'hui et je veux à la liste que dans un la liste déroulante.
Donc, si je fais une recherche aujourd'hui (2012-aug-02) i devrait obtenir les lignes suivantes:
entrée de base - 100 - 1 - 2012-08-01
entrée Sponsor - 350-2 - 2012-08-01
entrée du personnel - 70 - 3 - 2012-08-01
Si je fais une recherche ce que je devrais obtenir (2012-déc-20) les lignes suivantes:
entrée de commanditaire - 350-2 - 01/08/2012
entrée du personnel - 70 - 3 - 01/08/2012
entrée de base - 200 - 1 - 01/12/2012
Comment puis-je construire ceci dans linq-to-sql?
Mon idée était quelque chose comme:
var f = from data in mc.AttendingTypes
where DateTime.Now.CompareTo(data.FromDate) > 0
group data by new { data.GroupId, data.Name, data.Price, data.AttendingTypesId }
into newData
select new { newData.Key.Name, newData.Key.Price, newData.Key.AttendingTypesId };
.Choisir (g => g.OrderByDescending (m => m.FromDate). First()) à .Select (g => g.OrderByDescending (m => m.FromDate).FirstOrDefault()) et cela a parfaitement fonctionné. – Patrick
@Patrick ok édité, pour avoir la bonne réponse;) –