Cómo recibir mensajes en orden ascendente por fecha de recepción en la API gráfica

CorePress2024-01-24  10

Estoy intentando recibir mensajes de correo electrónico a través de Microsoft Graph API:

requestBuilder
    .Delta()
    .Request()
    .Expand("attachments")
    .GetAsync(ChildCancellationToken.Token);

pero los mensajes vienen en orden descendente por FechaRecibida y Hora. Por ejemplo, tenemos 15 mensajes nuevos con FechaRecibida y Hora = n, donde n representa la fecha y hora. En la primera parte vendrá:

[15,14,13,12,11,10,9,8,7,6 (deltaHash="someValue")]

en segundo:

[5,4,3,2,1 (deltaHash=NULL)]

Por lo tanto, el correo electrónico más antiguo será el más reciente (LIFO, no FIFO). Pero espero obtener:

[1,2,3,4,5,6,7,8,9,10 (deltaHash="someValue")]
[11,23,13,14,15 (deltaHash=NULL)]

Lo que probé: probé OrderBy(valor de cadena). Para estos dos obtengo excepciones:

.OrderBy("ReceivedDateTime asc")
.OrderBy("ReceivedDateTime")

Esto está funcionando bien:

.OrderBy("ReceivedDateTime desc")

pero este es el mismo comportamiento predeterminado y creo que en realidad es un error. Por lo tanto, no hay forma de ordenar los correos electrónicos en orden ASC.

¿Cómo resolver a primera vista un requisito muy simple y común?

Hola, si la respuesta publicada resuelve tu pregunta, márcala como respuesta haciendo clic en la marca de verificación. Hacerlo ayuda a otros a encontrar respuestas a sus preguntas. Consulte meta.stackexchange.com/questions/5234/…

- Shiva Keshav Varma

28 de marzo de 2021 a las 5:15



------------------------------------

Parece que se trata de un problema conocido, tal como se especifica en la documentación.

La única expresión $orderby admitida es $orderby=fechahorarecibida+desc. Si no incluyese un $orderby expresión, el orden de devolución no está garantizado.

Por ahora, debes ordenarlos escribiendo tu propio código.

2

Gracias por la respuesta. Lo hice exactamente de la misma manera (clasificando por cliente). Pero empresas como Microsoft podrían proporcionar una API más confiable.

-Vitaly Radionov

29 de marzo de 2021 a las 1:43

¡Sí! Quizás en el futuro lo arreglen. Por ahora, continúa e invierte el orden descendente que obtienes al escribir el código.

- Shiva Keshav Varma

29 de marzo de 2021 a las 4:13



------------------------------------

Puedo confirmar que .OrderBy("ReceivedDateTime asc") ahora funciona a partir de la versión de la API de Microsoft-graph que estoy usando, que es 5.36.0

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare