J'ai la liste que je veux commander par comme ceci ordre par si si Comment dois-je faire par Linq à SQL? p> mise à jour:
J'ai fait des modifications suivies suivi de Michal Turczyn .Mais d'affichage de la sortie du journal n'a pas pu être traduit par P> Microsoft.Entyframeworkcore.Query: AVERTISSEMENT: L'expression LINQ
'Orderby [p] .refundstatus ASC, ([P] .SumbitTime.ticks *
Convertir (iif (([p] .refundstatus == 1), 1, -1), INT64)) ASC,
Ef.property (? [P] ?, "ID") ASC 'ne pouvait pas être traduit et sera
évalué localement. Microsoft.entityframeworkcore.Query: AVERTISSEMENT: le
LINQ Expression 'Order By [P] .refundstatus ASC, ([P] .SumbitTime.ticks *
Convertir (iif (([p] .refundstatus == 1), 1, -1), INT64)) ASC,
Ef.property (? [P] ?, "ID") ASC 'ne pouvait pas être traduit et sera
évalué localement. p>
blockQuote> p> RefunStatus code> Tout d'abord, puis: p> si Refundestatus == 1 code> puis par Sumbittime code> ascendance, p> refundstatus! = 1 code> par Sumppittime code> . P>
3 Réponses :
Cela devrait faire ce que vous recherchez si je comprends votre question correctement.
var sorted = refundList.GroupBy(refund => refund.RefundStatus)
.SelectMany(
group => group.Key == 1
? group.OrderBy(p => p.SumbitTime)
: group.OrderByDescending(p => p.SumbitTime))
.ToList();
Je suis désolé, cela ne fonctionne pas .Turrez un type d'argument d'exception ne correspond pas à
Je ferais cela en suivant: L'idée est que lorsque vous multipliez par -1 code> nombre de ticks dans votre DateTime Code>, il l'ordonnera en ordre décroissant sans avoir à diviser votre collection à deux parties. P> P>
C'est une bonne idée mais je ne suis pas sûr que ticks code> peut être traduit en SQL.
@ VC74 Ceci est géré par .NET et linq2sql framework en interne. Donc, vous ne devriez pas m'inquiéter à ce sujet :)
Toutes les requêtes LINQ ne peuvent pas être traduites en SQL, en particulier celles utilisant des fonctionnalités .NET. Mais cela peut marcher, attendons que l'op d'essayer ...
C'est une bonne idée, mais cela ne fonctionne pas. Pour une référence d'objet d'exception non définie sur une instance d'objet. A à Lambda_Method (fermeture, anonymousobject) sur system.linq.internal.lookup 2.Createforjoinasync (iayncenumer capable code> 1 source, func 2 Keyselector, iéqualitycomparer code> 1 comparateur, annulation d'annulation ) Dans d: \ a \ 1 \ 1 \ s \ ix.net \ source \ system.interactive.async \ lookup.cs: li ne 301
@ Z.chen check NullReferenceException
@ Michałturczyn je mets skip / prendre après l'ordre de l'ordre, puis de. il fonctionne avec succès. Merci ~
@ Michałturczyn J'ai suivi Linq aux journaux SQL. @ VC 74 peut être correct. Logs Sortie dans ma mise à jour
Vous pouvez utiliser ce qui suit.
Refund = 0 - SubmitTime = 22-03-2019 14:31:16 Refund = 0 - SubmitTime = 22-03-2019 14:29:16 Refund = 0 - SubmitTime = 22-03-2019 14:28:16 Refund = 0 - SubmitTime = 22-03-2019 14:26:16 Refund = 0 - SubmitTime = 22-03-2019 14:23:16 Refund = 1 - SubmitTime = 22-03-2019 14:22:16 Refund = 1 - SubmitTime = 22-03-2019 14:24:16 Refund = 1 - SubmitTime = 22-03-2019 14:25:16 Refund = 1 - SubmitTime = 22-03-2019 14:27:16 Refund = 1 - SubmitTime = 22-03-2019 14:30:16
Cela a fonctionné sur Linq, mais il ne peut pas être traduit en SQL
@ VC74 Désolé, je ne comprends pas ce que signifie votre statut. Tous les remboursements de la collection ont différents refundstatus
@Z. Chen Votre question n'est pas cristalline pour moi, un exemple avec des échantillons de données aiderait ...
@ Z.chen Pourriez-vous fournir un exemple d'entrée / sortie?