---
title: "order by enligt \"in-parameters\" i nhibernate"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/182114-order-by-enligt-in-parameters-i-nhibernate"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "doggelito"
published: "2010-01-22T07:03:06.000Z"
updated: "2010-01-22T16:29:03.000Z"
replies: 4
views: 644
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/182114-order-by-enligt-in-parameters-i-nhibernate"
---

# order by enligt "in-parameters" i nhibernate

## #1 — doggelito, 2010-01-22T07:03Z

Hej, går det på nått fiffigt sätt att sätta en order by enligt de värden som skickas in i selecten?

```
public IList<Unit> GetUnits(Guid[] units)
{
            IList<Unit> result;

            StringBuilder sb = new StringBuilder();
            sb.Append("select u from Unit u where u.ID in (:Units) ");
           
            using (var tx = NHibernateHelper.GetCurrentSession().BeginTransaction())
            {           
                NHibernate.IQuery query = NHibernateHelper.GetCurrentSession()
                       .CreateQuery(sb.ToString());

                query.SetParameterList("Units", units);
                result = query.List<Unit>();

                tx.Commit();
            }

            return result;
}
```

Här vill jag få tillbaka IList:en i samma ordning som units skickas in. 
Som det är nu så verkar nhibernate skicka tillbaka i egen random ordning!

Permalänk: https://www.webforum.nu/p/182114

## #2 — Nickemannen, 2010-01-22T09:37Z

Tror inte det går, men du kan ju lägga på en sorteringsalgorithm i efterhand på resultatet.

Permalänk: https://www.webforum.nu/p/2223742

## #3 — doggelito, 2010-01-22T12:48Z

Mm, jag nästan antog att jag skulle få ett sådant svar! ;)

I ren sql så skulle man kunna skapa en tmp tabell som man lägger in värdena i och sedan joinar och sätter orderby enligt den tabellen. Skulle det gå att göra i hql kod eller är man tvingad till att bygga en stored procedure då tror du?

Permalänk: https://www.webforum.nu/p/2223757

## #4 — Compusa, 2010-01-22T15:48Z

Flyttad från: Webbutveckling  \> ASP.NET

Permalänk: https://www.webforum.nu/p/2223763

## #5 — onkelborg, 2010-01-22T16:29Z

Är det stora mängder data? Om det är mindre mängder data så är det nog överlägset bäst att göra den sorteringen i .NET och ej i databasservern. Ett förslag på sådan lösning är:

Unit\[\] sortedResult = new Unit\[units.Count\];
foreach(Unit u in result)
{
  sortedResult\[units.IndexOf(u.MinNyckel)\] = u;
} 
return new List\<Unit\>(sortedResult);

Enkel förklaring: skapar array med rätt storlek, går igenom varje resultat, tar reda på originalindex i parameterlistan, och stoppar sedan in objektet på det indexet i arrayen.

Permalänk: https://www.webforum.nu/p/2223768

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/182114-order-by-enligt-in-parameters-i-nhibernate
