Comment sélectionner des valeurs de date Min et Max dans la requête Linq
je passe de SQL à Linq et j'ai besoin d'aide. Je teste à la fois Linq-to-SQL et Linq-to-Entities. Je veux essayer les deux pour décider lequel me convient le mieux. Votre aide est très appréciée. Merci
Quelle est la syntaxe correcte (en vb.net si possible) pour sélectionner la date minimale d'un tableau?
Dim mydata As New DataClassesDataContext
Dim myresult = From cv In mydata.T1s
Select cv.DATE1, cv.Date2, cv.Datex
myresult=Dump()
j'ai essayé, j'ai essayé d'utiliser
Select amin=cv.DATE1.Min(), amax=cv.Date1.Max(), bmin=cv.Date2.Min(), etc....
donne cette erreur 'Min' is not a member of 'Date'
.
Les Données Que je veux obtenir min et max sur est ci-dessous:
IOrderedQueryable<VB$AnonymousType_0<DateTime,DateTime>> (16 items)
Date1 Date2
17/Oct/09 12:00:00 AM 23/Oct/09 12:00:00 AM
10/Jan/09 12:00:00 AM 15/Feb/09 12:00:00 AM
27/Mar/09 12:00:00 AM 27/Mar/09 12:00:00 AM
30/May/09 12:00:00 AM 30/May/09 12:00:00 AM
25/Jan/09 12:00:00 AM 25/Mar/09 12:00:00 AM
01/Nov/09 12:00:00 AM 01/Nov/09 12:00:00 AM
21/Feb/09 12:00:00 AM 04/Mar/09 12:00:00 AM
02/Mar/09 12:00:00 AM 09/Mar/09 12:00:00 AM
07/Jul/09 12:00:00 AM 07/Jul/09 12:00:00 AM
27/Sep/09 12:00:00 AM 27/Sep/09 12:00:00 AM
05/Nov/09 12:00:00 AM 05/Nov/09 12:00:00 AM
15/Apr/09 12:00:00 AM 15/Apr/09 12:00:00 AM
08/Jun/09 12:00:00 AM 08/Jun/09 12:00:00 AM
07/Jul/09 12:00:00 AM 07/Jul/09 12:00:00 AM
30/Jul/09 12:00:00 AM 30/Jul/09 12:00:00 AM
04/Nov/09 12:00:00 AM 04/Nov/09 12:00:00 AM
maintenant résolu, mais ce n'est pas une solution parfaite, il semble que j'ai dû faire une requête séparée pour chaque colonne qui nécessite une fonction agrégée :
Sub Main
Dim mm = (From cv In T1s
Select Datez = (cv.Date1)).Min()
Dim mm1 = (From cv In T1s
Select Datez = (cv.Date1)).Max()
Dim mm2 = (From cv In T1s
Select Datez = (Date2)).Min()
Dim mm3 = (From cv In T1s
Select Datez = (Date2)).Max()
mm.dump()
mm1.dump()
mm2.dump()
mm3.dump()
End Sub
Les Résultats sont en dessous de
10/Jan/09 12:00:00 AM
05/Nov/09 12:00:00 AM
15/Feb/09 12:00:00 AM
05/Nov/09 12:00:00 AM
3 réponses
si vous cherchez la date la plus ancienne (valeur minimum), vous triez puis prenez le premier article retourné. Désolé pour le C#:
var min = myData.OrderBy( cv => cv.Date1 ).First();
ce qui précède retournera l'objet entier. Si vous voulez juste la date de retour:
var min = myData.Min( cv => cv.Date1 );
en ce qui concerne la direction à prendre, re: Linq à Sql vs Linq aux Entities, il n'y a pas vraiment beaucoup de choix ces jours-ci. Linq to Sql n'est plus développé; Linq to Entities (Entity Framework) est le chemin recommandé par Microsoft jour.
Microsoft Entity Framework 4 en Action (MEAP release) par Manning Press:
Qu'en est-il de L'avenir de LINQ à SQL?
ce N'est pas un secret pour LINQ SQL est inclus dans le cadre 4.0 pour des raisons de compatibilité. Microsoft a clairement indiqué que l'Entité Le cadre est recommandé la technologie d'accès aux données. Dans le l'avenir, il sera fortement améliorée et étroitement intégré à d'autres technologies tandis que LINQ à SQL seulement être maintenu et peu évoluer.
dim mydate = from cv in mydata.t1s
select cv.date1 asc
datetime mindata = mydate[0];