2016-04-24 5 views
0

linqを使用してデータベースを照会するのは初めてです。私の望むように動作しないため、クエリに何らかの欠陥があるか不思議です。私は2つの数字にマッチするアイテムをデータベースに残しているかどうかチェックするだけです。2つの値を確認するLinqクエリ

はいの場合は、データベースに何も追加する必要はありませんが、アイテムが既にこの番号で脱退しているかどうかを確認しても、新しいものを追加し続けるようです。何が間違っていて、どのようにクエリを改善できますか?

 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を含むので)「ID」というフィールドを持っていますか?これらのフィールドの1つだけが指定されている場合、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

それは今働いている!私はあなたのコードをコピー/ペーストしたときにタイピングエラーが発生しました!助けてくれてありがとう! –

関連する問題