再次陷入困境。
我一直试图找到一种方法来编写以下内容(不幸的是,我的所有尝试都失败了......)
我有两个数组/列表你想要调用它们。 两者都有不同的项目,尽管它们总是具有相同数量的项目。 为了我的问题,这些列表各有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());
}
请注意,列表框仅用于故障排除,因此我可以看到阵列中的内容。
答案 0 :(得分:1)
创建一个包装器类,它包含两个项目并生成一个列表。如果需要,您可以轻松地将组合列表转换为您感兴趣的对象列表:
List<Item1> item1s = combinedList.ConvertAll(pair => pair.Item1);
答案 1 :(得分:1)
通用:
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);
}
}