gpt4 book ai didi

c# - 按另一个集合值对集合进行排序

转载 作者:行者123 更新时间:2023-11-30 21:56:13 24 4
gpt4 key购买 nike

我有List<SomeData> data;

public class SomeData
{
public int Key { get; set;}
public decimal Value { get; set;}
}

我还有List<int> DataOrder;

我需要对 List<SomeData>data 进行排序通过 Key , 将其按与 List<int> DataOrder 相同的顺序放置值(value)观。

有什么通用的算法吗?

例子:

List<SomeData> data = new List<SomeData>();
data.Add(new SomeData{ Key = 10, Value = 14 })
data.Add(new SomeData{ Key = 25, Value = 22 })
data.Add(new SomeData{ Key = 567, Value = 3 })
data.Add(new SomeData{ Key = 57, Value = 300 })
data.Add(new SomeData{ Key = 17, Value = 200 })
data.Add(new SomeData{ Key = 343, Value = 42 })

List<int> DataOrder = new List<int>{1, 25, 700, 567, 343, 350, 10};

排序后的结果:

foreach(var element in data)
{
Console.WriteLine(element.Key);
}

输出:

25
567
343
10
57
17

编辑:初始data数组可以有 Key , 不包含在 DataOrder 中这样的值应该以任何顺序放在结果集合的末尾。更改示例以说明它。

最佳答案

关于加入:

var mySortedList = (from i in DataOrder
join d in data on i equals d.Key
select new SomeData
{
Key = d.Key,
Value = d.Value
});

编辑:要从 data 添加那些不在 DataOrder 中共享任何键的值 - 列表,您可以简单地添加一个 Union结果如下:

var result = mySortedList.Union(data.Where(x => !DataOrder.Contains(x.Key)));

关于c# - 按另一个集合值对集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31672401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com