读取包含大量元素 C# 的字符串列表
本文关键字:字符串 列表 元素 包含大 读取 | 更新日期: 2023-09-27 18:35:28
我想读取(该列表中的所有数据),但我不知道如何在 C# 中执行此操作
//Create a list to store the result
List<string>[] list = new List<string>[2];
list[0] = new List<string>();
list[1] = new List<string>();
//Open connection
if (mysql.OpenConnection() == true)
{
//Create Command
MySqlCommand cmd = new MySqlCommand(query, mysql.connection);
//Create a data reader and Execute the command
MySqlDataReader dataReader = cmd.ExecuteReader();
//Read the data and store them in the list
while (dataReader.Read())
{
list[0].Add(dataReader["filename"] + "");
list[1].Add(dataReader["hash"] + "");
}
//close Data Reader
dataReader.Close();
//close Connection
mysql.CloseConnection();
//return list to be displayed
return list;
}
如果有人能说可以从该 mysql 选择中创建数组,例如 2 索引 { "文件名", "哈希" }。在PHP中,我只需要做$array["文件名"] = 文件名;等。
我想在 foreach 循环中dataReader["filename"]
读取该数据。
您可以创建单个集合,而不是创建多个列表并尝试通过其索引同步数组,例如 List<Tuple<string, string>>
或用于对行的所有字段进行建模的List<SomeEntity>
,其中SomeEntity
是一个简单的 POCO 类,用于对查询中的数据行进行建模。
例如,创建一个新的 POCO 类来对行进行建模:
public class FileNameHash
{
public string FileName {get; set;}
public string Hash {get; set;}
// Other fields in your query here
}
。并修改您的获取代码
//Create a list to store the result
var list = new List<FileNameHash>();
using (var mysql = new MySqlConnection(connectionString))
using (var cmd = new MySqlCommand(query, mysql.connection))
using (var dataReader = cmd.ExecuteReader())
{
if (mysql.OpenConnection() == true)
{
//Read the data and store them in the list
while (dataReader.Read())
{
list.Add(new FileNameHash
{
FileName = (string)dataReader["filename"],
Hash = (string)dataReader["hash"]
// .. Other fields here
});
}
return list;
}
}
其他:
- 通过将
Connection
、Command
和DataReader
等IDisposable
包装在使用中,您可以避免忘记关闭/处置所有路径中的资源(包括异常)的问题。
将 - 空字符串添加到对象以转换为字符串不是一个好主意 IMO - 显式执行强制转换。
不确定我是否理解您的问题,但我认为您非常接近: 您可以使用以下命令来获取文件名:
foreach(string filename in list[0])
您可以使用以下命令迭代哈希:
foreach(string hash in list[1])
您可以通过不将这两个 List 放在数组中来简化代码,即只需使用:
List<string> filenames = new List<string>();
List<string> hashes = new List<string>();
首先创建模型类:
Public class FileAndHashCode
{
public string name {get;set}
public string hashCode{get;set}
}
然后创建一个方法:
Public List<FileAndHashCode> getFileAndhashcode()
{
''...
List<FileAndHashCode> temp=new List<FileAndHashCode>();
while (dataReader.Read())
{
temp.add(new
FileAndHashCode{name=dataReader["fileName"].ToString()+" " , hashCode=dataReader["hash"].ToString()+" "});
}
return temp;
}