我試圖根據ID列表找到記錄。但是當記錄被返回時,訂單就會丟失。
我需要按照與list
中收到的順序相同的順序返回records
。我將如何做到這一點?根據ID列表選擇記錄並保留訂單
// Select Records from list of id's
public IQueryable<Record> GetRecords(List<int> list)
{
/*
* Linq to SQL has a limit on 2100
*/
var records = Enumerable.Empty<Record>().AsQueryable<Records>();
var limit = 2000;
var result = list.Select((value, index) => new { Index = index, Value = value })
.GroupBy(x => x.Index/limit)
.Select(g => g.Select(x => x.Value).ToList())
.ToList();
foreach (var r in result)
{
var row = r;
records = records.Union(db.Records.Where(a => row.Contains(a.record_id)));
}
return records;
}
爲什麼在最後不要調用'records.OrederBy(x => x.record_id)'? –
SQL將無法保留您的訂單。您必須在應用程序中手動排序結果。 –
@Saeed是不是隻是將記錄從最小到最大的id排序,而不是按照它在'list'中收到的順序? – Niklas