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

本文关键字:对象 比较 列表 | 更新日期: 2023-09-27 18:22:03

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

我在类(cv { int Id_candidat})的列表(c)中从DB检索所有id_members。我需要检查此列表中是否存在已登录用户的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;
    }
    ...

我的问题是,我如何检查数据库中是否存在登录用户的简历?

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

您可以在填写可用cvs列表时检查候选是否存在:

...
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;

您可以使用linq-Any来检查简历列表中是否存在候选人ID,假设您已经公开了cv类的非私人ID成员(您尚未明确):

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