我想创建一个像这样的字符串对象
string data = "85-null-null-null-null-price-down-1-20"; // null if zero
我有这样的方法。
public static DataSet LoadProducts(int CategoryId, string Size,
string Colour, Decimal LowerPrice,
Decimal HigherPrice, string SortExpression,
int PageNumber, int PageSize,
Boolean OnlyClearance)
{
/// Code goes here
/// i am goona pass that string to one more method here
var result = ProductDataSource.Load(stringtoPass) // which accepts only the above format
}
我知道我可以使用StringBuilder
,但使用它需要太多代码行。我在这里寻找一个简约的解决方案。
答案 0 :(得分:7)
您可以这样做:
return string.Format("{0}-{1}-{2}-{3}-{4}-{5}-{6}-{7}-{8}",
CategoryId,
Size ?? "null",
Colour ?? "null",
LowerPrice != 0 ? LowerPrice.ToString() : "null",
HigherPrice != 0 ? HigherPrice.ToString() : "null",
SortExpression ?? "null",
PageNumber != 0 ? PageNumber.ToString() : "null",
PageSize != 0 ? PageSize.ToString() : "null",
OnlyClearance);
为方便起见,您可以创建扩展方法:
public static string NullStringIfZero(this int value)
{
return value != 0 ? value.ToString() : "null";
}
public static string NullStringIfZero(this decimal value)
{
return value != 0 ? value.ToString() : "null";
}
使用它们如下:
return string.Format("{0}-{1}-{2}-{3}-{4}-{5}-{6}-{7}-{8}",
CategoryId,
Size ?? "null",
Colour ?? "null",
LowerPrice.NullStringIfZero(),
HigherPrice.NullStringIfZero(),
SortExpression ?? "null",
PageNumber.NullStringIfZero(),
PageSize.NullStringIfZero(),
OnlyClearance);
答案 1 :(得分:5)
string foo = String.Format("{0}-{1}-{2}-{3}-{4}-{5}-{6}-{7}-{8}",
CategoryId,
Size ?? "null" ... );
答案 2 :(得分:2)
请使用您喜欢的格式覆盖对象的ToString方法并调用Object.tostring()方法
评论后请求的示例:
public class Foo
{
public string Field1 {get; private set;}
public string Field2 {get; private set;}
public override string ToString()
{
return string.Format("Field1 = {0} , Field2 = {1}", Field1, Field2);
}
}
现在这样做的好处是: