将对象列表与对象进行比较

时间:2013-07-11 15:08:50

标签: c#

我有一个按钮 ADD CV 。当用户登录到网站时,我检查表"cv" {id_member, id_cv},如果表中已存在id_member,则禁用 ADD CV 按钮,否则用户可以点击它。

我从类(id_members)的列表(c)中的DB中检索所有cv { int Id_candidat}。我需要检查此列表中是否存在已记录用户的ID(从Session变量中提取)。

这是我怎么做的,但它不起作用:

protected void Page_Load(object sender, EventArgs e)
{
    List<cv> c = new List<cv>();

    SqlConnection con = new SqlConnection(@"Data Source=p5-pc\sqlexpress;" + 
              "Initial Catalog=recrutement_online_3;Integrated Security=True");
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    con.Open();
    cmd.CommandText = "select id_candidat from cv";
    SqlDataReader dr = cmd.ExecuteReader();

    while (dr.Read())
    {
        cv p3 = new cv();
        p3.Id_candidat = int.Parse(dr[0].ToString());
        c.Add(p3);        
    }
    dr.Close();
    con.Close();

    cv r = new cv();
    r.Id_candidat = int.Parse(Session["Id_candidat"].ToString());
    if (c.Contains(r))
    {
        Button1.Enabled = false;
    }

    ...

我的问题是,如何检查数据库中已记录用户的cv是否存在?

2 个答案:

答案 0 :(得分:1)

填写可用简历列表时,您可以检查候选人是否存在:

...
bool candidatExists = false;
int idCandidat = int.Parse(Session["Id_candidat"].ToString());
while (dr.Read())
    {
        cv p3 = new cv();
        p3.Id_candidat = int.Parse(dr[0].ToString());
        c.Add(p3);
        if(p3.Id_candidat == idCandidat)
        {
             candidatExists = true;
        }
    }
    dr.Close();
    con.Close();

    Button1.Enabled = !candidatExists;

答案 1 :(得分:1)

您可以使用linq Any来检查CV列表中是否存在候选ID,假设您已经公开了cv类的非私有ID成员(您还没有清除):

bool showAddCvBtn = c.Any(id => id.id_member == r.Id_candidat);