[英]Linq OrderBy - Get Name By ID
我正在嘗試按名稱對列表進行排序,但是當我剛獲得 ID 時,我不知道該怎么做。 例子:
public class CustomTask {
int categoryid;
}
public class DataOption {
int id;
string name;
}
public void Sort() {
List<DataOption> TheListContainingTheCategories = ...;
// The List containing my CustomTasks
List<CustomTask> listTempTasks = ...
var listTasksSorted = listTempTasks.OrderBy(...).ToList();
}
對 ID 進行排序並不是很難,但是當我想按名稱對其進行排序時,我該怎么做?
謝謝你的幫助
猜猜這樣做的最短方法是
var listTasksSorted = from ct in listTempTasks
join d in TheListContainingTheCategories on ct.categoryid equals d.id
orderby d.name
select new {ct, d};
然后listTasksSorted
看起來像這樣
所以列表按名稱排序,id 在一起,不需要額外的功能或成員
另一種選擇是
var listTasksSortedAlternative = TheListContainingTheCategories.Where(d =>
listTempTasks.Any(ct =>
d.id == ct.categoryid)).OrderBy(d => d.name);
哪個看起來像
嘗試這個:
public void Sort()
{
List<DataOption> TheListContainingTheCategories = ...;
Dictionary<int, string> lookup = TheListContainingTheCategories.ToDictionary(x => x.id, x => x.name);
List<CustomTask> listTempTasks = new List<CustomTask>();
var listTasksSorted = listTempTasks.OrderBy(c => lookup[c.categoryid]).ToList();
}
鑒於您想按匹配排序
DataOption.name 當 DataOption.id == CustomTask.categoryId
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.