从返回值中删除括号 ()
Remove bracket () from returned value
我最近开始使用 Tuple
,目前我正在从数据库中检索两个值,它们是
- 名字
- 姓氏
我的函数有一个基本的 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.Item1
和 yourTuple.Item2
的情况。
括号中的内容由Tuple
的ToString()
调用完成,例如:
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);
}
我最近开始使用 Tuple
,目前我正在从数据库中检索两个值,它们是
- 名字
- 姓氏
我的函数有一个基本的 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.Item1
和 yourTuple.Item2
的情况。
括号中的内容由Tuple
的ToString()
调用完成,例如:
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);
}