私はforeachループを壊す方法を知りたいと思っています。どこに出力されているのでしょうか?私の問題は、私が2番目の要素を停止するためにbreak文を使うときはいつも、最初の要素も表示されているということです。 2番目の要素だけを取得したい場合は、1番目の要素と2番目の要素が表示されます。 2番目の要素だけが表示されます。あなたは私のforeachループセクションでここに見ることができるようにforeachループのbreak文は、C#を使用して計画どおりに動作していませんか?
public partial class Pages_GuitarItemsIbanezDetails : System.Web.UI.Page
{
private string guitarBrandType = "Ibanez";
private int x = 0;
protected void Page_Load(object sender, EventArgs e)
{
FillPage();
}
public void FillPage()
{
ArrayList itemDetails = new ArrayList();
if (!IsPostBack)
{
itemDetails = ConnectionClass.GetItems("%");
}
else
{
itemDetails = ConnectionClass.GetItems(guitarBrandType);
}
StringBuilder sb = new StringBuilder();
foreach (GuitarItems gList in itemDetails)
{
sb.Append(
string.Format(
@"<div class='guitarItemsDetailsWrapper'>
<div class='guitarItemsDetailsImage'>
<img runat='server' src='{3}' />
</div>
<div class='guitarItemsDetailsStyle'>
<h2>Name: </h2><p>{0} {1}</p>
<br/>
<h2>Price: </h2><p>${2}</p>
<br/>
<h2>Description: </h2><p>{4}</p>
<br/>
<h2>Neck Type: </h2><p>{5}</p>
<br/>
<h2>Body: </h2><p>{6}</p>
<br/>
<h2>Fretboard: </h2><p>{7}</p>
<br/>
<h2>Bridge: </h2><p>{8}</p>
<br/>
<h2>Neck Pickup: </h2><p>{9}</p>
<br/>
<h2>Bridge Pickup: </h2><p>{10}</p>
<br/>
<h2>Hardware Color: </h2><p>{11}</p>
<br/>
</div>
</div>", gList.Type, gList.Model, gList.Price, gList.Image2, gList.Description, gList.NeckType,
gList.Body, gList.Fretboard, gList.Bridge, gList.NeckPickup, gList.BridgePickup, gList.HardwareColor));
if (++x == 2)
{
break;
}
}
lblOutput.Text = sb.ToString();
}
}
:
が良いこれを説明するために、ここに私のコードです。私は3番目のループからif文を使用して2番目の要素を表示できるようにしましたが、代わりに1番目の要素と2番目の要素を表示します。あなたが2番目の要素だけを表示するのを助けてくれることを願っています。自由に編集し、より良いコードテクニックを提案してください。
あなたが唯一の第二の要素をしたい場合は、次のような
または
のような別のクエリを使用するように、あなたの場合にはこのような何かを試してみてください全く? –
ループは、基本的にすべてのことに対して何かをします。ブレークはループを停止しますが、ループが実行したすべてが完了します。 indexerを使ってリストにアクセスします。たとえば 'itemDetails [1]'のようなものです。 – Sascha
あなたはこれを行うために最も難しい(そして維持するのが難しい)方法をかなり選択しました。 –