相关疑难解决方法(0)

为什么这个List <>.IndexOf代码比List [i]和手动比较快得多?

我在这段代码上运行AQTime,我发现.IndexOf占用了16%的时间而接近80%的另一块......他们似乎使用相同的IsEqual和其他例程.被称为116,000次,插入30,000件物品.List <>对象都没有超过200个元素.(我可能错误地使用AQTime,我正在研究这个)

class PointD : IEquatable<PointD>
{
    public double X, Y, Z;

    bool IEquatable<PointD>.Equals(PointD other)
    {
        return ((X == other.X) && (Y == other.Y) && (Z == other.Z));
    }
}

class PerfTest
{
    readonly List<PointD> _pCoord3Points = new List<PointD>();
    public int NewPoints;
    public int TotalPoints;

    public PerfTest()
    {
        NewPoints = 0;
        TotalPoints = 0;
    }
    public int CheckPointIndexOf(PointD pt)
    {
        int retIndex = _pCoord3Points.IndexOf(pt);
        if (retIndex < 0)
        {
            _pCoord3Points.Add(pt);
            NewPoints++;
        }
        TotalPoints++;
        return retIndex;    
    }

    public int CheckPointForBreak(PointD pt) …
Run Code Online (Sandbox Code Playgroud)

c# performance indexof

9
推荐指数
1
解决办法
5185
查看次数

C# Linq 使用参考列表对列表进行排序

我有两个列表,我需要将一个列表与另一个列表进行排序。

var orderList = new List<long>() {4, 55, 34};
var itemList = new List<Branch>() { {Id=55, Name="X"},  {Id=34, Name="Y"}, {Id=4, Name="Z"} }; 
Run Code Online (Sandbox Code Playgroud)

我如何itemList根据第一个列表来订购第二个列表orderList

有没有 linq 的捷径?

更新:

orderList将始终包含所有预期的Id分支itemList

c# linq

5
推荐指数
1
解决办法
1014
查看次数

按另一个数组中指定的顺序对数组进行排序

我有一个键值对列表,我想根据另一个数组中指定的顺序对其进行排序。

var requiredOrder = new String[] { "PH", "HH", "PR", "SR", "UN", "UD", "WD", "WE", "OT" };


        var listToBeSorted = new List<KeyValuePair<string, string>>() {
            new KeyValuePair<string, string>("A","PR"),
            new KeyValuePair<string, string>("B","PH"),
            new KeyValuePair<string, string>("C","HH"),
            new KeyValuePair<string, string>("D","WD"),
            new KeyValuePair<string, string>("E","OT"),
            new KeyValuePair<string, string>("F","UN"),
            .....
        };
Run Code Online (Sandbox Code Playgroud)

“listToBeSorted”实际上是我为下拉列表获取的集合,该下拉列表需要根据“requiredOrder”数组按值排序。

c# arrays sorting list

5
推荐指数
1
解决办法
978
查看次数

使用外部优先级列表对项目进行任意排序

我有一个像这样的独特物品清单:

List<Animals> ItemList = Cat, Dog, Bird, ...
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用外部优先级列表对它进行排序,如下所示:

List<Animals> PriorityList = Dog, Cat, Bird, ...
Run Code Online (Sandbox Code Playgroud)

我发现我可以用这种方式正确排序项目:

ItemList.OrderBy(i => i == Dog).ThenBy(i => i.Cat).ThenBy(i => i.Bird)...
Run Code Online (Sandbox Code Playgroud)

但是这种方法的可扩展性非常糟糕。有人知道如何使用LINQ和PriorityList做到这一点吗?

c# linq sorting

2
推荐指数
1
解决办法
88
查看次数

标签 统计

c# ×4

linq ×2

sorting ×2

arrays ×1

indexof ×1

list ×1

performance ×1