簡體   English   中英

Linq OrderBy - 通過 ID 獲取名稱

[英]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看起來像這樣

linq 結果按名稱排序

所以列表按名稱排序,id 在一起,不需要額外的功能或成員

另一種選擇是

var listTasksSortedAlternative = TheListContainingTheCategories.Where(d => 
                                 listTempTasks.Any(ct => 
                                 d.id == ct.categoryid)).OrderBy(d => d.name);

哪個看起來像

替代 linq

嘗試這個:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM