2013-07-11 194 views
-2

我有一個按鈕ADD CV。當用戶登錄到網站時,我檢查表"cv" {id_member, id_cv},如果id_member已經存在於表中,則ADD CV按鈕被禁用,否則用戶可以點擊它。將對象列表與對象比較

我從類DB(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; 
    } 

    ... 

我的問題是,我如何檢查登錄用戶的數據庫簡歷是否存在等?

+0

您應該處理變量命名。什麼是'c'或'r'應該代表一個以前從未見過你的代碼的人? – DGibbs

+0

你的問題是什麼? –

+0

它很難用簡短的變量名 – user2509738

回答

1

填充可用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; 
+0

thx很多工作正常;) –

+0

不客氣。 – manji

1

您可以使用LINQ Any檢查候選ID在CV名單假設你已經暴露存在您的cv類的非私人id成員(您尚未清除):

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