2016-04-24 89 views
0

我是新來使用linq查詢數據庫,只是想知道我的查詢是否有任何缺陷,因爲它不按我想要的。我只是想檢查是否存在與數字匹配的數據庫中的任何項目。Linq查詢檢查兩個值

如果是的話,什麼都不應該添加到數據庫,但它似乎繼續添加新的東西,儘管我做了檢查,如果一個項目已經與這個數字excist!我做錯了什麼,如何改進我的查詢?

 if(db.Member.Any(x => x.ID == c && x.CountryID == d)) 
     { 
      Do something if there is a match and the member already excist in DB... 
     } else 
     { 
      Write new Member to DB.... 
     } 
+0

'c'和'd'都是'int'還是什麼類型? – Sampath

+0

@Sampath是的,他們都是INT –

+0

似乎你沒有提供數據庫中存在的值的c或d。你如何計算這些值?爲什麼你有一個名爲'ID'的字段,它不能唯一標識一條記錄(因爲你在查詢中包含countryID)。如果僅提供這些字段中的一個,Any()是否返回true? –

回答

1

請嘗試此版本。

var memberObject=db.Member.Where(x => x.ID == c && x.CountryID == d).FirstOrDefault(); 

if (memberObject==null){ 
    //Write new Member to DB.... 
}else{ 
    //Do something if there is a match and the member already excist in DB... 
} 
+0

謝謝,但它仍然向DB添加新項目!? –

+0

然後你的特定記錄中沒有這樣的值。否則,它會怎麼發生。你可以分享你試圖找出的記錄嗎?可能是錶行圖像或類似的東西。 – Sampath

+1

現在工作!我複製/粘貼代碼時發生了輸入錯誤!謝謝您的幫助! –