3

動的に作成されCheckBoxListた。このCheckBoxList中に、ユーザー入力を検証するために使用されるネストされたforeachループがあります。ユーザーは自分のメールアドレスを入力します。ユーザーが[送信]をクリックすると、CheckBoxListが作成されます。ユーザーの電子メールがトピックのサブスクリプションと一致する場合、そのトピックの横にあるチェックボックスが選択されます。私が抱えている問題は、元のアウターforeachをネストされたに関連付けることですforeach

int i = 0;
foreach (Topic topic in result)
{
    string topicName = topic.TopicArn.ToString().Split(':').Last();
    ListItem li = new ListItem(topicName, topic.TopicArn);
    checkBoxList1.Items.Add(li);

    foreach (Subscription subscription in subs) // where topic equals current 
                                                // topic in original foreach?
    {
        if (txtEmail.Text == subscription.Endpoint)
            checkBoxList1.Items[i].Selected = true;
    }
    i++;
}

LINQを使用してforeachループに条件を追加できるかもしれないと思っnestedていましたが、まだすべてをまとめることはできませんでした。

4

1 に答える 1

1

チェックボックスをオンにするかどうかの評価を開始する前に、まずすべてのチェックボックスを作成する必要があります。上記のコードでは、Listitem を 1 つ作成してから、すべてのサブスクリプションをループ処理するため、チェックボックス リストに 2 番目の Listitem を作成する前に、そのループで範囲外になります。

 foreach (Topic topic in result)
 {
   string topicName = topic.TopicArn.ToString().Split(':').Last();
   ListItem li = new ListItem(topicName, topic.TopicArn);
   li.Selected = subs.Any(s => s.Endpoint == txtEmail.Text && s.TopicArn == topic.TopicArn);
   checkBoxList1.Items.Add(li); 
 }
于 2012-12-19T18:43:53.837 に答える