Nathan Robinson

My feedback

  1. 639 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    13 comments  ·  Storage » Blobs  ·  Flag idea as inappropriate…  ·  Admin →
    Nathan Robinson supported this idea  · 
  2. 508 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Microsoft
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    7 comments  ·  Azure Cosmos DB » SQL API  ·  Flag idea as inappropriate…  ·  Admin →

    Thank you for your feedback. I have discussed this in more detail with our team.

    You are correct the workaround suggested to use .AsEnumerable().FirstOrDefault(). should not be a recommended work around. This way results in materializing all documents on the client first before getting the 1st document, which is not very efficient and the exact opposite of what you are trying to achieve.

    Instead we recommend you use Take(1).AsEnumerable() and then .First() or .Single() or .FirstOrDefault() for Single() and First(). Take(1) is translated to SELECT TOP 1 and is processed server-side so more efficient than the previous suggestion and is what you are trying to achieve.

    As to the original ask. The support for these operations can be done, but this work is not prioritized against the other work we want to deliver. I will move this back as unplanned but please note this is on our roadmap.

    Thanks again…

    An error occurred while saving the comment
    Nathan Robinson commented  · 

    If you want to use this workaround, you need to use `.Take(2)` if you are using `.Single()` or `.SingleOrDefault()` or else `.Single` won't throw an exception when more than one record would have matched. `.Take(1)` works just fine with `.First()` or `.FirstOrDefault()`.

Feedback and Knowledge Base