C#从另一个列表的值中对列表进行排序

时间:2016-09-23 17:32:22

标签: c# list sorting

希望你能帮助我。

好的,我有两个清单。

List1 - 获取没有路径的文件的名称(因此我可以在动态创建的按钮上列出名称)。更多只是出于视觉目的。

List2 - 存储文件的实际路径。

现在我已经完成了List1.Sort();和List2.Sort()。 但由于它们是按字母顺序排列的,因此C:///的直接路径与Hello.png不同。 <(仅为示例名称)>

所以我面临的问题是,List1和2在存储实际元素的位置上并不相同。 (这有意义)。

那么有没有办法喜欢将List2排序以匹配与List1相同的顺序?反之亦然。所以,当我点击按钮时,它会加载所需的正确图像等。

2 个答案:

答案 0 :(得分:1)

我同意上述注释,使用单个完整路径列表并使用System.Io.Path.FileName方法按文件名排序,无论目录如何。

        var list2 = new List<string>() { @"C:\Directory1\B.txt", @"C:\Directory2\A.txt" };
        var orderedList = list2.OrderBy(System.IO.Path.GetFileName);
        //orderedList[0] is @"C:\Directory2\A.txt"
        //orderedList[1] is @"C:\Directory1\B.txt"

答案 1 :(得分:0)

通过压缩两个列表来创建排序字典。

var sortedDict = new SortedDictionary<string, string>(
        list1.Zip(ist2, (k, v) => new { k, v }).ToDictionary(x => x.k, x => x.v));