如何按照我提供的ID顺序从Linq查询中获取结果?

时间:2010-05-26 22:37:24

标签: c# linq

我希望按照我将ID传递给查询的顺序从Linq获取查询结果。所以它看起来像这样:

var IDs = new int [] { 5, 20, 10 }

var items = from mytable in db.MyTable
            where IDs.Contains(mytable.mytableID)
            orderby // not sure what to do here
            select mytable;

我希望得到的物品大约为IDs(5,20,10)。

(注意这与this question类似,但我想在Linq而不是SQL中进行此操作)

2 个答案:

答案 0 :(得分:1)

这应该适用于LINQ到对象;我不确定它是否与LINQ-to-SQL有关:

var ids = new int [] { 5, 20, 10 };

var result = from item in items
             where Array.IndexOf(ids, item.Id) >= 0
             orderby Array.IndexOf(ids, item.Id)
             select item;

答案 1 :(得分:1)

我只是在SQL查询之外做。在这种情况下,在SQL Server上完成它确实没有任何好处。

var items = (from mytable in db.MyTable
             where IDs.Contains(mytable.mytableID)
             select mytable)
            .ToArray()
            .OrderBy(x => Array.IndexOf(ids, x.mytableID));