2

Visual C# で、配列が既にセッションに存在するかどうかを検出するにはどうすればよいですか? ウェブサイトには、名前を書くことができる TextBox があります。「クリック」ボタンをクリックすると、ラベルに名前が追加されます。同じ名前を追加すると、ラベルに「名前は既に存在します!」のようなメッセージが表示されるはずです。私は何をすべきか?「contains」メソッドについて読みましたが、うまく機能しませんでした。私はどんな間違いをしますか?

次のコードは次のとおりです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void btnClick_Click(object sender, EventArgs e)
    {
        if (Session["listOfCharacters"] == null) 
        {
            Session.Add("listOfCharacters", new List<Character>());
        }

        List<Character> listOfCharacters = (List<Character>)Session["listOfCharacters"];

        listOfCharacters.Add(new Character() { name = txtName.Text});

        lblShow.Text = "";

        foreach (Character item in listOfCharacters)
        {
            lblShow.Text += "Name: " + item.name + "<br />";

        //if (listOfCharacters.Contains(Session["listOfCharacters"]))
        //{
        //    lblShow.Text = "Exists";
        //}
        }
    }
}

私を信じてください、私は何時間も何日もかかりましたが、まだ解決策を見つけていません.

4

4 に答える 4

1

アイテムがリストに存在するかどうかを確認するためのLINQクエリを書くことができます

例えば

private string _listofcharacters = "listOfCharacters";
protected void Button1_Click(object sender, EventArgs e)
{
    if (Session[_listofcharacters] == null)
    {
        Session.Add(_listofcharacters, new List<Character>());
    }

    List<Character> listOfCharacters = (List<Character>)Session[_listofcharacters];

    lblShow.Text = "";

    var check = from p in listOfCharacters
                where p.Name.ToLower().Contains(txtName.Text.ToLower())
                select p;

    if (check.Count() == 0)
    {
        listOfCharacters.Add(new Character() { Name = txtName.Text });

        foreach (Character item in listOfCharacters)
        {
            lblShow.Text += "Name: " + item.Name + "<br />";
        }
    }
    else
    {
        lblShow.Text = "Name already exists!";
    }
}
于 2013-05-05T13:26:54.433 に答える