【问题标题】:How SELECT many tags on a Table and save it on a List<string>如何在一个表上选择多个标签并将其保存在 List<string> 中
【发布时间】:2019-11-16 14:10:10
【问题描述】:

我想知道如何将我桌子上的所有标签保存在一个列表中。

string query = "SELECT JobNumber + JobName + JobTag FROM dbo.Cat05Projects WHERE JobNumber = @JobNumber AND JobTag = @JobTag";
SqlCommand command = new SqlCommand(query, cn);
command.Parameters.AddWithValue("JobNumber", JobNumber);
command.Parameters.AddWithValue("JobTag", JobTag);

SqlDataReader reader = command.ExecuteReader();

if (reader.HasRows)
{
     while (reader.Read())
     {
         tags.Add(reader[0].ToString());
         tags.Add(reader[1].ToString());
         tags.Add(reader[2].ToString());

     }
 }

【问题讨论】:

  • 嗨,天使,欢迎来到 stackoverflow,你想从你的表中获取所有 Distinct jobTags,还是你想要 JobNumber、jobName 以及 JobTag
  • 相关 - 不要使用addwithvalue

标签: c# sql-server select ado.net


【解决方案1】:

由于您的串联(JobNumber + JobName + JobTag),因此无法使用reader[X].ToString(),因为只会返回一个字符串。为了正确获取记录,您必须使用 comma 而不是 plus,如下所示。

string query = "SELECT JobNumber , JobName , JobTag FROM dbo.Cat05Projects WHERE JobNumber = @JobNumber AND JobTag = @JobTag";

你没有提到任何关于 tags 数据结构的事情,但是如果我没记错的话,在得到正确的响应之后,如果你只是试图获取 JobTag您可以使用 LINQ 过滤最终列表。

【讨论】:

  • 我的意思是,我的标签是我的 SQL 表的列
【解决方案2】:

这就是我想要的

query = "SELECT * FROM dbo.Cat05Projects WHERE JobNumber = @JobNumber AND JobTag = @JobTag";
                command = new SqlCommand(query, cn);
                command.Parameters.AddWithValue("JobNumber", JobNumber);
                command.Parameters.AddWithValue("JobTag", JobTag);

                SqlDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    for (int i = 1; i < reader.FieldCount; i++)
                    {
                        lista.Add(reader[i].ToString());
                    }
                }

【讨论】:

    猜你喜欢
    • 2014-04-26
    • 2011-08-22
    • 1970-01-01
    • 2011-02-22
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多