foreach (SalesInfo sales in this)
{
if (sales.Senior == true)
senX = "x";
if (sales.Veteran == true)
vetX = "x";
fileOut.WriteLine("{0:d4} {1,-25} {2,-14} {3,3} {4,3} {5,10:MM/dd/yyyy} {6,10:n} "
+ "{7,10:n} {8,8:n} {9,6:n} {10,10:n}",
sales.ID, sales.Name, sales.City, senX, vetX, sales.PurDate,
sales.ProductTotal, sales.DiscountTotal, sales.SalesTax, sales.ShippingCharge,
sales.InvoiceTotal);
}
所以我的问题是,当高级或退伍军人的数据成员为真时,我需要在我的报告中插入一个 X。 这个工作所以我想是否有人知道更好的方法?
您必须在编写行后设置senX
并vetX
回""
,因此对于新的迭代,它是空的。否则,无论布尔值如何,您都将在整个报表中获得 exe。
另一种解决方案是使用(sales.Senior?"X":"")
作为 WriteLine 语句中的表达式,因此您根本不需要变量。
foreach (SalesInfo sales in this)
{
senX = sales.Senior ? "x" : "";
vetX = sales.Veteran ? "x" : "";
fileOut.WriteLine("{0:d4} {1,-25} {2,-14} {3,3} {4,3} {5,10:MM/dd/yyyy} {6,10:n} "
+ "{7,10:n} {8,8:n} {9,6:n} {10,10:n}",
sales.ID, sales.Name, sales.City, senX, vetX, sales.PurDate,
sales.ProductTotal, sales.DiscountTotal, sales.SalesTax, sales.ShippingCharge,
sales.InvoiceTotal);
}
如果在赋值中使用三元运算符 (x ? y : z),它将负责分配 "x" 并将值清除为 " 每次循环迭代。
尝试添加字符"{"和"}"!
if (sales.Senior == true)
{
senX = "x";
}
if (sales.Veteran == true)
{
vetX = "x";
}