从返回值中删除括号()

时间:2015-01-15 10:43:57

标签: c# .net

我最近开始使用Tuple,我目前正从DB中检索两个值

  1. 我的函数有一个基本的SQL查询来从DB

    中选择名称
    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>
    

    该函数按预期返回值,但似乎将它们放在括号中,如下所示 (约翰,史密斯)我想知道我是否可以移除价值周围的()

    我试过了return new Tuple<string, string>(FirstName, Surname);,但它仍然是一样的。如果我错过了一些相当明显的东西,请原谅我。提前感谢您的所有帮助和支持

2 个答案:

答案 0 :(得分:3)

(John, Smith)是调用元组ToString()的结果,而#34; John&#34;作为Item1和&#34; Smith&#34;为Item2

可能您正在GetName()显示某个地方,因此隐式调用ToString()

因此,只有在隐式调用ToString()并明确使用yourTuple.Item1yourTuple.Item2时才能避免这种情况。

答案 1 :(得分:3)

将内容括在括号中是通过ToString() Tuple调用来完成的,例如:

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

产生

(Foo, Bar, Baz)

你可以简单地做

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

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

生产

Foo, Bar, Baz

你可能最好创建一个类或结构来保存数据:

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);
}