c# LINQ 在 datareader 中查找值

c# LINQ find value in datareader

这是我在 MySQL 数据库上的 table :

+----------+--------+---------+
| UserName | Region | UsercIX |
+----------+--------+---------+
| a123456  | X410   | NULL    |
| a123456  | X420   |       1 |
| a123456  | X430   | NULL    |
| a123456  | X440   |       1 |
+----------+--------+---------+

用户 a123456X420X440 区域 启用写入](UsercIX=1) 并读取 X410X430 区域 (UsercIX=NULL).

我需要在这个 table 中找到 - 通过 LINQ 或你的建议 - 在列 UsercIX[=36 中只有等于 1 的值=],因为 DataReader 提取列的第一个值为空的值。

请你帮帮我?

下面是我的代码

using (OdbcDataReader reader = command.ExecuteReader())
{
    if (reader.HasRows)
    {
        while (reader.Read())
        {
           int UsercIX = Convert.ToInt32(reader["UsercIX"]);  //IS NULL
        }
    }
}

编辑#01

using (OdbcDataReader reader = command.ExecuteReader())
{
    if (reader.HasRows)
    {
        while (reader.Read())
        {
            int UsercIX = reader.GetInt32(6);
        }
    }                            
}

我认为您应该以这种方式访问​​这些值:

**SqlDataReader** reader = command.ExecuteReader();

int UsercIX = reader.GetInt32(2);

在 while 循环中。 列以 0

开头

最终您 运行 在访问空值时出错,然后使用 try() {} catch() {} 结构来避免这种情况。 - 希望这对您有所帮助!

这是 mysql 的完整示例;

public void CreateMySqlDataReader(string mySelectQuery, MySqlConnection myConnection)
{
MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection);
myConnection.Open();
MMySqlDataReader myReader;
myReader = myCommand.ExecuteReader();
try
{
while(myReader.Read())
{
Console.WriteLine(myReader.GetString(0));
}
}
finally
{
myReader.Close();
myConnection.Close();
}
}

我可以建议尝试解析该值吗?

     int number;

     bool success = Int32.TryParse((reader["UsercIX"], out number);
     if (success)
     {
             // it worked, yay
     }
     else
     {
             // 
     }