将ListView转换为行分隔的字符串数组,反之亦然

本文关键字:字符串 数组 反之亦然 分隔 ListView 转换 | 更新日期: 2023-09-27 18:01:45

我试图在我的ListView中采取所有项目,并将每个项目写入字符串数组内的新行(或类似的东西)。这样我就可以将这些值传递给对象中的字符串属性,然后保存到SQL数据库(Varchar(max))。

我已经尝试过了

public string ConvertToString(ListView l)
        {
            ArrayList list = new ArrayList();
            foreach (string item in l.Items)
            {
                list.Add(item);
            }
            return list.ToString();
        }

,但我显然错过了我正在努力的换行符分割。当前的代码只保存"System.Collections"。

我也做了很多谷歌搜索和不断遇到"字符串[]",但这没有好,因为我必须预定义的长度,我不知道,因为它不断变化,当项目被添加到ListView

当从数据库读取值时,我还需要一个反向方法来将每行放回ListView。

将ListView转换为行分隔的字符串数组,反之亦然

StringBuilder完美地保存了CR/LF字符。

  public string ConvertToString(ListView l)
  {
     StringBuilder list = new StringBuilder();
     foreach (string item in l.Items)
        list.AppendLine(item);
     return list.ToString();
  }

反向类似:

  public voidConvertToString(ListView l, string dbString)
  {
     string [] sep = {"'r'n"};
     foreach (string item in dbString.Split(sep, StringSplitOptions.None))
        l.Items.Add(item);
  }

我实现了这个函数来转换为String数组:

        /// <summary>
        /// Convert a ListView to an array of string
        /// </summary>
        /// <param name="ListView1"></param>
        /// <returns>an array of strings</returns>
        private string[] ConvertToArray(ListView ListView1)
        {
            string[] array = new string[ListView1.Items.Count];
            for (int i = 0; i <= ListView1.Items.Count - 1; i++)
            {
                array[i] = ListView1.Items[i].Text;
            }
            return array;
        }