gpt4 book ai didi

c# - 从 List 中删除项目或在任何位置获取任何项目的索引

转载 作者:太空宇宙 更新时间:2023-11-03 19:51:50 24 4
gpt4 key购买 nike

我正在尝试从 List<string[]> 中删除项目但删除属性不起作用,但如果我使用 RemoveAt(0) (任何 int 硬编码值)然后它正在工作......可能是什么问题。谁能帮帮我?

这是我的代码...

List<string[]> ipcol1 = new List<string[]>();
ipcol1.Add(new string[] { "test1" });
ipcol1.Add(new string[] { "test2" });
ipcol1.Add(new string[] { "test3" });
ipcol1.Add(new string[] { "test4" });
ipcol1.Remove(new string[] { "test1" });

int i = ipcol1.IndexOf(new string[] { "test4" });
ipcol1.RemoveAt(i);

或者,如果我正在尝试获取特定项目的索引,那么它会给我 (-1) 作为结果......如果我可以获得该问题的索引,那么我的问题就可以解决......请帮助我。

最佳答案

比较数组时必须使用 SequenceEqual:

  List<string[]> ipcol1 = new List<string[]>();
ipcol1.Add(new string[] { "test1" });
ipcol1.Add(new string[] { "test2" });
ipcol1.Add(new string[] { "test3" });
ipcol1.Add(new string[] { "test4" });

ipcol1.RemoveAll(array => array.SequenceEqual(new string[] { "test1" }));

或者(如果您想删除数组中某处包含 "test1" 的任何记录):

  ipcol1.RemoveAll(array => array.Any(item => item == "test1")));

原因是如果两个数组具有相同的引用,则它们是相等的:

  string[] array1 = new string[0];
string[] array2 = array1;
string[] array3 = new string[0];

// "Yes" - array1 and array2 reference to the instance
Console.WriteLine((array1 == array2) ? "Yes" : "No");
// "No" - array1 and array3 are references to different instances
Console.WriteLine((array1 == array3) ? "Yes" : "No");

// "Yes" - array1 and array3 are equal sequences
Console.WriteLine((array1.SequenceEqual(array3)) ? "Yes" : "No");

关于c# - 从 List<string[]> 中删除项目或在任何位置获取任何项目的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38203615/

24 4 0
文章推荐: c# - 填充 ListBox 时从每个列表项中删除前 12 个字符
文章推荐: css - 背景图片不显示
文章推荐: matlab - 图像分割后的高效分割边界标记
文章推荐: javascript - 无法让
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com