我希望按照我将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中进行此操作)
答案 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));