2016-12-05 6 views
1
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を挿入する必要があることです。私は誰かがもっと良い方法を知っているかどうか疑問に思ったので、このinstは働いていましたか?真の場合にBoolにレポートを挿入する方法

+3

「作業していない」ことについて詳しく説明できますか?出力として何を得ていますか? – Rob

答えて

4

senXvetXは、行を書き込んだ後に""に戻って設定する必要があります。新しい反復では空です。それ以外の場合は、ブール値に関係なく、レポート全体でexeを取得します。

もう1つの解決策は、WriteLineステートメントの式として(sales.Senior?"X":"")を使用することです。そのため、変数はまったく必要ありません。

+0

ありがとう!私はそれを試みたが、私はそれが早期にリセットされたことを実現した... – MDub

-3

「{」と「}」の文字を追加してみてください!あなたは三項演算子(?X Y:Z)を使用している場合

if (sales.Senior == true) 
{ 
    senX = "x"; 
} 

if (sales.Veteran == true) 
{ 
    vetX = "x"; 
} 
+0

-1; (O.P.のコードのような)単一のif文と制御標準以外の制御括弧との間に違いはありません。彼らは両方とも正確に同じものにコンパイルします。 –

0
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」を割り当て、値を「」各ループの繰り返しをクリアするの世話をします。

関連する問題