7

在我的一个页面中,我需要检查输入的有关客户的信息是否包含PAN NO,Email,Mobile No以前输入的重复信息。目前我正在尝试使用此Linq To SQL语句

    var duplicate = (from dup in dt.Data_Customer_Logs
                     where dup.cPanGirNo == panno 
                           || dup.cEmail == email 
                           || dup.nMobileNo.ToString() == mobno
    select dup).Any(); 

它正在工作,但任何人都可以帮助我解决我的问题的正确方法是什么。此外,如果没有找到记录,结果会是什么。欢迎任何建议。

4

2 回答 2

5
bool duplicateExists = dt.Data_Customer_Logs.Any(x => 
                         x.cPanGirNo == panno 
                      || x.cEmail == email
                      || x.nMobileNo.ToString() == mobno);

如果您只想知道此类记录是否存在,这会更干净一些。而且我认为它将避免将多条记录带回客户端,然后IEnumerable<T>.Any对结果进行处理。

如果您还需要取回符合条件的记录,您可以使用IQueryable<T>.Where

var duplicates =  dt.Data_Customer_Logs.Where(x => 
                         x.cPanGirNo == panno 
                      || x.cEmail == email
                      || x.nMobileNo.ToString() == mobno);
if(duplicates.Any())
{
    // use duplicates...
    foreach(var dup in duplicates)
    {
        //use dup.cEmail, dup.nMobileNo, etc.
于 2012-06-19T07:41:13.337 回答
2

试试这个

var duplicate = (from dup in dt.Data_Customer_Logs
                 where dup.cPanGirNo == panno 
                       || dup.cEmail == email 
                       || dup.nMobileNo.ToString() == mobno
select dup).FirstOrDefault();

if(duplicate != null && duplicate.Any())
   //here logic of what should happend if there is something in db
于 2012-06-19T07:40:35.390 回答