检查两个表的用户名可用性c#

时间:2016-05-10 23:42:02

标签: c# asp.net database

我正在尝试检查两个表中的用户名可用性如何执行此操作请帮助。

            a = (from n in dbobj.stores 
                 where n.st_UserName == storeuname 
                 select n.st_id).Single();
            return true;        

我试图同时检查:

            a = (from n in dbobj.stores && dbobj.customer
           where n.st_UserName == storeuname or n.cu_UserName == storeuname
                 select n.st_id).Single();
            return true;        

如果我以错误的方式做任何事情,请帮助我。

2 个答案:

答案 0 :(得分:1)

嗯,你不能逐字同时检查两个表 ,但你可以在一个查询中检查 。有很多方法可以做到这一点 - 最简单的方法是Union两个查询:

a = 
    (from n in dbobj.stores 
                     where n.st_UserName == storeuname 
                     select n.st_id)
    .Union
    (from n in dbobj.stores 
                     where  n.cu_UserName == storeuname 
                     select n.st_id)
    .Single()

答案 1 :(得分:0)

Single假设将返回一条记录。根据微软的说法:

  

返回序列的唯一元素,如果序列中没有一个元素,则抛出异常。

所以最好使用Any然后调整return语句

bool any = (from n in dbobj.stores 
            where n.st_UserName == storeuname 
            select n.st_id).Any();
return any;

在第二个查询中,您显然正在尝试连接两个表。你不能这样做。而是一个接一个地执行测试

bool any = (from n in dbobj.stores 
            where n.st_UserName == storeuname 
            select n.st_id).Any();
if (any) {
    return true;
}

any = (from n in dbobj.customer
       where n.cu_UserName == storeuname
       select n.st_id).Any();
return any;

如果在第一个表中找不到用户,则仅查询第二个表。

相关问题