我正在尝试检查两个表中的用户名可用性如何执行此操作请帮助。
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;
如果我以错误的方式做任何事情,请帮助我。
答案 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;
如果在第一个表中找不到用户,则仅查询第二个表。