-1
 var j = from c in User.USERs
                    where (c.USER_NAME.Equals(tempUserName))
                    select c;

这一直给我一个空序列

两者都只是将用户输入与数据库进行比较的字符串

4

3 回答 3

1

做这样的事情:

var j = User.USERs.First(c => c.USER_NAME == tempUserName)

或者

var j = User.USERs.Single(c => c.USER_NAME == tempUserName)

或者只是从您自己的查询给您的结果中取 j[0] 。

PS - 如果没有与查询匹配的项目,First 或 Single 都会抛出异常,如果您想在没有找到任何内容的情况下返回 null,请分别使用 FirstOrDefault 和 SingleOrDefault。


要拓宽范围,请尝试以下操作:

string userToSearchFor = tempUserName.Trim().ToLower();
var j = User.USERs.FirstOrDefault(c => c.USER_NAME.ToLower() == userToSearchFor);

if (j != null)
{ 
  //found something 
}
于 2012-12-13T17:33:04.093 回答
0

如果它返回一个空序列,那么您的 where 子句评估为 false,如果您需要先解决该问题,请检查它生成的 SQL。

要回答您的问题,以获得您通常使用的单个元素

.Single( ) .SingleOrDefault() .First() .FirstOrDefault()

于 2012-12-13T17:37:32.737 回答
0

我会这样做:

var result = User.USERs.SingleOrDefault(x => x.USER_NAME.Equals(tempUserName));
if (result != null)
{
    //do your thing
}   
于 2012-12-13T18:01:41.557 回答