Reorder objects based on provided enumerable order
If the list on input is going to be short, or if performance doesn't matter to you, you can simplify the code by using IndexOf() instead of the dictionary:

public void ReorderElements(IEnumerable&lt;int&gt; elementSks)
{
    var elementsToReorder = GetSession().QueryOver&lt;DocumentElement&gt;()
        .WhereRestrictionOn(de =&gt; de.DocumentElementSk).IsIn(elementSks.ToArray()).List();

    var elementOrder = elementSks.ToList();

    foreach(var element in elementsToReorder)
         element.DisplayOrder = elementOrder.IndexOf(element.DocumentElementSk);

    this.Save(elementsToReorder);
}