相关疑难解决方法(0)

将数组元素从一个数组位置移动到另一个数组位置

我很难搞清楚如何移动数组元素.例如,给出以下内容:

var arr = [ 'a', 'b', 'c', 'd', 'e'];
Run Code Online (Sandbox Code Playgroud)

我怎么能写一个'd'以前移动的函数'b'

还是'a'之后'c'

移动后,应更新其余元素的索引.这意味着在第一个例子中,移动arr [0]将='a',arr [1] ='d'arr [2] ='b',arr [3] ='c',arr [4] = 'E'

这看起来应该很简单,但我无法绕过它.

javascript arrays

464
推荐指数
17
解决办法
37万
查看次数

ObservableCollection <T> .Move(int,int)如何工作?

我似乎无法通过阅读MSDN上的ObservableCollection.Move(int oldIndex,int newIndex)文档来解决这个问题:

oldIndex类型:System.Int32从零开始的索引,指定要移动的项的位置.newIndex类型:System.Int32从零开始的索引,指定项的新位置.

我不明白它是如何工作的.该项目会发生什么变化newIndex?我的假设是每个项目的索引index >= newIndex递减.这个假设是否正确?更重要的是,在MSDN上某处解释或描述了这种行为?

.net c# collections

22
推荐指数
1
解决办法
7851
查看次数

在IEnumerable中向上移动项目

我需要在IEnumerable <>中移动一个项目,即将一个项目移到另一个上面.最简单的方法是什么?

这里有一个类似的问题,但我没有通用列表只有一个IEnumerable <>:Generic List - 在列表中移动一个项目

c# ienumerable

3
推荐指数
1
解决办法
6446
查看次数

使用 List.Move 将项目移动到列表底部

我有一个项目列表和一个“选定”列表(完整列表的子集)。我想实现一个将子列表项移动到完整列表底部的函数。

例如,如果我从列表 0,1,2,3,4,5,6,7,8,9 中选择了元素 2,4, & 6,我希望这个函数的最终结果是 0,1, 3,5,7,8,9,2,4,6

目前,我正在尝试使用这样的东西,但我不确定如何定义moveTo

public object MoveLoopToBottom()
{
    if (selectedLoops.Count < 1)
        return null;

    foreach (ProfilerLoop selected in selectedLoops)
    {
        int moveFrom = ClonedLoops.IndexOf(selected);
        int moveTo = ;

        ClonedLoops.Move(moveFrom, moveTo);
    }

    return null;
}
Run Code Online (Sandbox Code Playgroud)

我咨询了它的List.Move工作原理:通用列表 - 在列表中移动一个项目,但它似乎不能“移动到列表末尾”。List.Move可以(最多)移动到“倒数第二个”位置(试图移动到列表的末尾会抛出“OutOfRange Exception”)。

而不是List.Move,我尝试执行List.Removethen List.Add(或List.Addthen List.RemoveAt),但是调用List.Remove给我的 foreach 循环迭代带来了问题(哪里List.Move没有)。

有什么建议?

c# list

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

如何在c#中移动列表中的项目子集?

我有以下列表:

List<string> l=new List<string()>{"a","b","c","d","1","2","3","4","a1","b2","c3","d4"};
Run Code Online (Sandbox Code Playgroud)

我有oldIndex,size而且newIndex.

我们先来说说上面的列表中oldIndex = 4,size = 4,newIndex = 0.

我想要的输出列表是:

{"1","2","3","4","a","b","c","d","a1","b2","c3","d4"};
Run Code Online (Sandbox Code Playgroud)

我发现的解决方案是(对所有情况都不起作用):

for(int i=0;i<size;i++)
{
    if(oldIndex<newIndex)
    {
        var x=l[oldIndex];
        l.RemoveAt(oldIndex);
        l.Insert(newIndex+size-1,x);
    }
    else
    {
        var x=l[oldIndex+i];
        l.RemoveAt(oldIndex+i);
        l.Insert(newIndex+i,x);
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法,可能使用LINQ或更好的东西,或者上面是唯一的方法吗?

我从这个链接找到了上面的答案.这个问题的不同之处在于我想移动一个块,而不仅仅是单个元素.

c# list

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

标签 统计

c# ×4

list ×2

.net ×1

arrays ×1

collections ×1

ienumerable ×1

javascript ×1