2016-04-24 65 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

现在工作!我复制/粘贴代码时发生了输入错误!谢谢您的帮助! –