相关疑难解决方法(0)

C#Distinct()方法是否保持序列的原始排序完整?

我想从列表中删除重复项,而不更改列表中唯一元素的顺序.

Jon Skeet和其他人建议使用以下内容

list = list.Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)

从列表C#中删除重复项

从C#中的List <T>中删除重复项

是否保证独特元素的顺序与以前相同?如果是,请提供一个确认的参考,因为我在文档中找不到任何内容.

c# list duplicates

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

在C#中随机"排序"(随机播放)整数列表的最有效方法

我需要以最有效的方式随机"排序"整数列表(0-1999).有任何想法吗?

目前,我正在做这样的事情:

bool[] bIndexSet = new bool[iItemCount];

for (int iCurIndex = 0; iCurIndex < iItemCount; iCurIndex++)
{
    int iSwapIndex = random.Next(iItemCount);
    if (!bIndexSet[iSwapIndex] && iSwapIndex != iCurIndex)
    {
        int iTemp = values[iSwapIndex];
        values[iSwapIndex] = values[iCurIndex];
        values[iCurIndex] = values[iSwapIndex];
        bIndexSet[iCurIndex] = true;
        bIndexSet[iSwapIndex] = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# random shuffle

51
推荐指数
4
解决办法
7万
查看次数

列表<T>的行为.在.NET 4.5中的排序从.NET 4.0改变了吗?

我在针对.NET 4.0的项目中进行了以下测试:

[TestFixture]
public class Donkey
{
    [Test]
    public void TestListSorting()
    {
        var expected = new[]
                    {
                                MockRepository.GenerateStub<IComparable>(),
                                MockRepository.GenerateStub<IComparable>()
                    };

        var sorted = new List<IComparable>(expected);

        CollectionAssert.AreEqual(expected, sorted);
        sorted.Sort();
        CollectionAssert.AreEqual(expected, sorted);

    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在仅安装了.NET 4.0的计算机上运行它,则会失败.如果我在只安装了.NET 4.5的机器上运行它,它会通过.

我假设在.NET 4.5的实施Sort已更改排序对象,每个返回列表时维持秩序0CompareTo.

现在,抛开这个测试的明显疯狂.我知道依靠这种行为是很疯狂的.

当然这是一个突破性的变化?本页未列出.NET 4.0和4.5之间的兼容性.

是否有一个原因?我错过了什么吗?是否有其他页面显示实际的重大变化?我应该坐下来停止恐慌吗?

.net c# .net-4.0 .net-4.5

26
推荐指数
2
解决办法
4774
查看次数

维护排序列表

我需要存储节点的集合:

class Node
{
   int Value;
   //other info
}
Run Code Online (Sandbox Code Playgroud)

我有三个要求:

  1. 需要能够有效地检索集合中具有最低 Value 的节点
  2. 需要能够高效地将节点插入到集合中
  3. 两个节点可以有相同的值

我认为为此使用的最佳集合是某种排序列表。这样,只需从排序列表中取出第一个元素,就可以有效地满足要求#1。通过在列表中的正确位置插入新节点,可以有效地满足要求#2。

但是SortedList.Net 中的集合就像SortedDictionary并要求排序的键是唯一的,这违反了要求#3。

.Net 中似乎没有满足这些要求的集合,主要是因为确实存在的自排序集合要求排序的键是唯一的。这是什么原因呢?我认为这不可能是疏忽。我在这里没有抓住什么?我可以找到类似的问题,但它们通常涉及有人提出建议SortList,然后意识到这不起作用,然后对话就在没有标准解决方案的情况下消失了。至少如果有人会说“C# 中没有用于此任务的集合,您需要将一些东西组合在一起”,这将是一个答案。

每当添加新节点时使用常规List<Node>并重新排序列表是否可以接受?似乎这不如一开始就将节点插入到正确的位置那么有效。也许这就是我应该做的?手动迭代列表,直到找到自己插入新节点的位置?

c#

6
推荐指数
1
解决办法
3469
查看次数

标签 统计

c# ×4

.net ×1

.net-4.0 ×1

.net-4.5 ×1

duplicates ×1

list ×1

random ×1

shuffle ×1