从返回值中删除括号 ()

Remove bracket () from returned value

我最近开始使用 Tuple,目前我正在从数据库中检索两个值,它们是

  1. 名字
  2. 姓氏

我的函数有一个基本的 SQL 查询 select 来自数据库的名称

public Tuple<string, string> GetName()
{
    using (SqlConnection connection = new SqlConnection(Common.ConnectionString))
    {
        string userName = HttpContext.Current.User.Identity.Name;

        using (SqlCommand cmd = new SqlCommand("SELECT Firstname, Surname FROM Users WHERE Username=@Username"))
        {
            cmd.Parameters.AddWithValue("Username", userName);
            cmd.Connection = connection;
            connection.Open();
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    FirstName = reader["Firstname"].ToString();
                    SurName = reader["Surname "].ToString();
                }
            }
        }
    }
 return Tuple.Create(Firstname, Surname); 
}

我在前端显示的值是

<h4>Welcome <b><%: GetName() %></b></h4>

函数 returns 预期的值但是它似乎将它们放在括号中如下 (John, Smith) 我想知道我是否可以删除值周围的 ()

我试过了return new Tuple<string, string>(FirstName, Surname);,但还是一样。如果我错过了一些相当明显的事情,请原谅。在此先感谢您的所有帮助和支持

(John, Smith) 是调用元组 ToString() 的结果,其中 "John" 为 Item1,"Smith" 为 Item2

可能你在某处显示你的元组就像 GetName() 所以 ToString() 被隐式调用。

所以只要避免 ToString() 可能被隐式调用并显式使用 yourTuple.Item1yourTuple.Item2 的情况。

括号中的内容由TupleToString()调用完成,例如:

Tuple.Create("Foo", "Bar", "Baz").ToString()

产生

(Foo, Bar, Baz)

你可以简单地做

String.Join(", ", tuple.Item1, tuple.Item2, tuple.Item2)

tuple.ToString().Trim('(', ')')

生产

Foo, Bar, Baz

您最好创建一个 class 或结构来保存数据:

public struct Person
{
    public Person(string firstName, string lastName)
    {
        FirstName = firstName;
        LastName = lastName;
    }

    public readonly string FirstName;
    public readonly string LastName;

    public override string ToString()
    {
        return this.FirstName + " " + this.LastName;
    }
}

然后您可以像这样使用它:

public Person GetName()
{
    // ...

    return new Person(firstName, lastName);
}