如何用=>排序?

良朋 2018-10-15 06:43:36

ArrayList myArray = new ArrayList();
List<double> list1 = new List<double> { 11.6, 10.23, 10.84, 9.7 };
List<string> list2 = new List<string> { "Green", "Red", "Apple", "Noddle" };

myArray.Add(list1);
myArray.Add(list2);


如何根据list1里面的值的大小,把list2的字符串排序? 不加进ArrayList(移除myArray ),直接排序行不行?

这次我要测试代码通过再结贴。
...全文
230 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2018-10-16
  • 打赏
  • 举报
回复
list2.Zip(list1, (x, y) => new { x, y }).OrderBy(x => x.y).Select(x => x.x)
良朋 2018-10-16
  • 打赏
  • 举报
回复
引用 7 楼 hanjun0612 的回复:
Array.Sort(array[],array[])就可以了
第一个作为键,第二个作为值。


这正是我需要的方法,和4楼的思路一样。看来排序什么的我们都不用干了,微软全帮我们干完了。
一楼二楼的代码我调试没能通过。3楼5楼6楼的方法我学习了,以后肯定用的到。
正怒月神 2018-10-16
  • 打赏
  • 举报
回复
Array.Sort(array[],array[])就可以了 第一个作为键,第二个作为值。
  • 打赏
  • 举报
回复
使用 Zip 函数在结构上是一样的,Zip 会比下标 i 遍历快那么一点点(实际上看不出来、不必纠结这个“快”)
List<double> list1 = new List<double> { 11.6, 10.23, 10.84, 9.7 };
List<string> list2 = new List<string> { "Green", "Red", "Apple", "Noddle" };
var query = from item in list1.Zip(list2,
    (value, name) => new
    {
        name,
        value
    })
            orderby item.value
            select item.name;
var result = query.ToArray();
  • 打赏
  • 举报
回复
重点是要搞懂算法中间数据结构
List<double> list1 = new List<double> { 11.6, 10.23, 10.84, 9.7 };
List<string> list2 = new List<string> { "Green", "Red", "Apple", "Noddle" };
var query = from i in Enumerable.Range(0, list1.Count)
            let item = new
            {
                name = list2[i],
                value = list1[i]
            }
            orderby item.value
            select item.name;
var result = query.ToArray();
其中 item 是落实的知识点。
xuzuning 2018-10-16
  • 打赏
  • 举报
回复
list2 =  list2.Zip(list1, (x, y) => new { x, y }).OrderBy(x => x.y).Select(x => x.x).ToList();

var a = list1.ToArray();
var b = list2.ToArray();
Array.Sort(a, b);
list2 = b.ToList();
吹风的兔子 2018-10-15
  • 打赏
  • 举报
回复


List<double> list1 = new List<double> { 11.6, 10.23, 10.84, 9.7 };
List<string> list2 = new List<string> { "Green", "Red", "Apple", "Noddle" };
 
List<Tuple<double, string>> list3 =new List<Tuple<double, string>>();
for(int i=0; i<list1.Count; i++) {
     list3.Add(new Tuple<double, string>(list1[i], list2[i]));
}

list3.Sort((x, y) => return x.Item1 == y.Item2?0: (x.Item1 > y.Item2?1:-1));

LIst<string> listResult = list3.Select(x=>x.Item2).ToList();   //listResult  就是你想要的结果

masanaka 2018-10-15
  • 打赏
  • 举报
回复

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧