读取包含大量元素的字符串列表C#

读取包含大量元素的字符串列表C#,c#,mysql,arrays,foreach,C#,Mysql,Arrays,Foreach,我想读(列表中的所有数据),但我不知道如何用C语言读# //创建一个列表来存储结果 列表[]列表=新列表[2]; 列表[0]=新列表(); 列表[1]=新列表(); //开放连接 if(mysql.OpenConnection()==true) { //创建命令 MySqlCommand cmd=newmysqlcommand(查询,mysql.connection); //创建数据读取器并执行命令 MySqlDataReader=cmd.ExecuteReader(); //读取数据并将其存储

我想读(列表中的所有数据),但我不知道如何用C语言读#

//创建一个列表来存储结果
列表[]列表=新列表[2];
列表[0]=新列表();
列表[1]=新列表();
//开放连接
if(mysql.OpenConnection()==true)
{
//创建命令
MySqlCommand cmd=newmysqlcommand(查询,mysql.connection);
//创建数据读取器并执行命令
MySqlDataReader=cmd.ExecuteReader();
//读取数据并将其存储在列表中
while(dataReader.Read())
{
列表[0]。添加(dataReader[“文件名”]+);
列表[1]。添加(dataReader[“哈希”]+);
}
//关闭数据读取器
dataReader.Close();
//密切联系
CloseConnection();
//要显示的返回列表
退货清单;
}
如果有人知道可以从mysql选择中创建数组,例如使用2个索引{“filename”,“hash”}。在PHP中,我只需执行$array[“filename”]=filename;等等


我想在foreach循环中以
dataReader[“filename”]
的形式读取这些数据。

我不确定我是否理解您的问题,但我认为您已经非常接近了:您可以使用以下方法对文件名进行foreach:

foreach(string filename in list[0])
foreach(string hash in list[1])
您可以使用以下方法对哈希进行迭代:

foreach(string filename in list[0])
foreach(string hash in list[1])
您可以通过不将这两个列表放入数组来简化代码,即只使用:

List<string> filenames = new List<string>();
List<string> hashes = new List<string>();
List filenames=newlist();
列表哈希=新列表();

您可以创建单个集合,例如
List
,或
List
来建模行的所有字段,而不是创建多个列表并尝试通过其索引同步数组,其中
SomeEntity
是一个简单的POCO类,用于建模查询中的一行数据

e、 g.创建一个新的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;
    }
}
//创建一个列表来存储结果
var list=新列表();
使用(var mysql=newmysqlconnection(connectionString))
使用(var cmd=newmysqlcommand(query,mysql.connection))
使用(var dataReader=cmd.ExecuteReader())
{
if(mysql.OpenConnection()==true)
{
//读取数据并将其存储在列表中
while(dataReader.Read())
{
添加(新文件名哈希)
{
文件名=(字符串)数据读取器[“文件名”],
哈希=(字符串)数据读取器[“哈希”]
//……这里还有其他领域
});
}
退货清单;
}
}
其他:

  • 通过将
    IDisposable
    Connection
    Command
    DataReader
    这样的东西包装在using中,可以避免忘记关闭/处置所有路径中的资源的问题,包括异常
  • 在我看来,向对象添加一个空字符串来强制转换为字符串不是一个好主意——显式地执行强制转换

首先创建模型类:

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;
    }
Public List getFileAndhashcode()
{
\\...
列表温度=新列表();
while(dataReader.Read())
{ 
临时添加(新)
FileAndHashCode{name=dataReader[“fileName”].ToString()+“”,hashCode=dataReader[“hash”].ToString()+“”});
}
返回温度;
}