Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C选择与另一个列表具有相同索引的列表项_C#_Collections - Fatal编程技术网

C# C选择与另一个列表具有相同索引的列表项

C# C选择与另一个列表具有相同索引的列表项,c#,collections,C#,Collections,又有点卡住了 我一直在试图找到一种方法来编写以下代码。不幸的是,我所有的尝试都失败了 我有两个数组/列表,不管你想叫它们什么。 两者都有不同的项目,尽管它们总是有相同数量的项目。 为了回答我的问题,这些列表各有3项 如何对其进行编码,以便如果我从列表1中获取项目2,那么列表2中的项目2也将被传输 所以。。有效地如果我要将项目2从列表1移到列表3,我希望将项目2从列表2中移到列表4 如果这有道理的话 没有任何代码来炫耀,因为我还没有找到一种方法来编码这个。。 任何善良的灵魂能在这件事上教育我吗 多

又有点卡住了

我一直在试图找到一种方法来编写以下代码。不幸的是,我所有的尝试都失败了

我有两个数组/列表,不管你想叫它们什么。 两者都有不同的项目,尽管它们总是有相同数量的项目。 为了回答我的问题,这些列表各有3项

如何对其进行编码,以便如果我从列表1中获取项目2,那么列表2中的项目2也将被传输

所以。。有效地如果我要将项目2从列表1移到列表3,我希望将项目2从列表2中移到列表4

如果这有道理的话

没有任何代码来炫耀,因为我还没有找到一种方法来编码这个。。 任何善良的灵魂能在这件事上教育我吗

多谢各位

编辑

我想做的实际事情是:

我有一个实时生成的哈希列表,一个这些哈希来自的文件的位置列表,以及一个健康哈希列表。我比较两个哈希表以找出差异,然后列出差异。所有这些我都已经编码了 我最不想做的事情是,使用列出的哈希值与正常哈希值不匹配,返回它们的目录,该目录已经在上面提到的列表中

string path = Application.ExecutablePath; // <------- Get full file path from this EXE
            string root = Path.GetDirectoryName(path); // <------- Get just the directory from above file path
            IEnumerable<string> list0 = File.ReadLines(root + "/healthy.txt");
            List<string> list1 = new List<string>();
            IEnumerable<string> list2 = Directory.EnumerateFiles(root, "*.lol", SearchOption.AllDirectories);
            List<string> list3 = new List<string>();
            foreach (string forone in list0)
            {
                list1.Add(forone.ToString());
            }
            foreach (string obj in list2)
            {
                listBox4.Items.Add(obj.ToString());
                list3.Add(GetMD5HashFromFile(obj.ToString()));
            }
            foreach (string obj2 in list3)
            {
                listBox2.Items.Add(obj2.ToString());
            }
            foreach (string hea in list1)
            {
                listBox1.Items.Add(hea.ToString());
            }
            IList<string> difference = list3.Except(list1).ToList();
            foreach (string something in difference)
            {
                listBox3.Items.Add(something.ToString());
            }

请注意,列表框仅用于故障排除,因此我可以查看数组中的内容。

创建一个包含这两个项目的包装器类,并创建一个列表。如果需要,您可以轻松地将组合列表转换为感兴趣的对象列表:

List<Item1> item1s = combinedList.ConvertAll(pair => pair.Item1);
通用:

public class SynchronizedListsWrapper<T>
{
    private readonly List<T> _first;
    private readonly List<T> _second;

    public SynchronizedListsWrapper(List<T> first, List<T> second)
    {
        _first = first;
        _second = second;
    }

    public void Add(T item)
    {
        first.Add(item);
        second.Add(item);
    }

    public void Remove(T item)
    {
        first.Remove(item);
        second.Remove(item);
    }
}

老实说,你的问题没有多大意义——你说的运输物品是什么意思?在提问的过程中,你也从两张列表变成了四张列表。。。现在还不清楚这与列表框有什么关系……要考虑的是:如果你有两个索引相关的数组一起作用和移动,也许你真正应该拥有的是一个包含两个属性的对象数组。如果你已经尝试过了,你一定有一些代码吧?也许我们可以修复您尝试过的代码。您是否可以提供一点您现有的代码,以便通过示例使您的问题更加清晰?听起来好像有两对数组,每一对都依赖于另一对。-可能不是这样,也许你可以提供,如果不是代码,一些基于单词/数字的例子?好的,我会再试一次:请看修改后的帖子。我可以看看这将如何工作。当我有空的时候,让我测试一下,希望它能起作用。
public class SynchronizedListsWrapper
{
    private readonly ArrayList _first;
    private readonly ArrayList _second;

    public SynchronizedListsWrapper(ArrayList first, ArrayList second)
    {
        _first = first;
        _second = second;
    }

    public void Add(object item)
    {
        first.Add(item);
        second.Add(item);
    }

    public void Remove(object item)
    {
        first.Remove(item);
        second.Remove(item);
    }
}