C# 比较linq到sql语句中的两个字符串

C# 比较linq到sql语句中的两个字符串,c#,C#,这一直给我一个空序列 这两个都只是字符串,我正在将用户输入与数据库进行比较,请执行以下操作: var j = from c in User.USERs where (c.USER_NAME.Equals(tempUserName)) select c; var j = User.USERs.Single(c => c.USER_NAME == tempUserName) string userToSear

这一直给我一个空序列


这两个都只是字符串,我正在将用户输入与数据库进行比较,请执行以下操作:

 var j = from c in User.USERs
                    where (c.USER_NAME.Equals(tempUserName))
                    select c;
var j = User.USERs.Single(c => c.USER_NAME == tempUserName)
string userToSearchFor = tempUserName.Trim().ToLower();
var j = User.USERs.FirstOrDefault(c => c.USER_NAME.ToLower() == userToSearchFor);

if (j != null)
{ 
  //found something 
}

或者从您自己的查询结果中获取j[0]

另外,如果没有与查询匹配的项,则First或Single都将引发异常,如果您希望在未找到任何项时返回null,则分别使用FirstOrDefault和SingleOrDefault


要拓宽范围,请尝试以下方法:

 var j = from c in User.USERs
                    where (c.USER_NAME.Equals(tempUserName))
                    select c;
var j = User.USERs.Single(c => c.USER_NAME == tempUserName)
string userToSearchFor = tempUserName.Trim().ToLower();
var j = User.USERs.FirstOrDefault(c => c.USER_NAME.ToLower() == userToSearchFor);

if (j != null)
{ 
  //found something 
}

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

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


我会这样做:

 var j = from c in User.USERs
                    where (c.USER_NAME.Equals(tempUserName))
                    select c;
var j = User.USERs.Single(c => c.USER_NAME == tempUserName)
string userToSearchFor = tempUserName.Trim().ToLower();
var j = User.USERs.FirstOrDefault(c => c.USER_NAME.ToLower() == userToSearchFor);

if (j != null)
{ 
  //found something 
}

然后我将如何单独使用j.first()中的j?var j=User.USERs.FirstOrDefault(c=>c.User_NAME==tempUserName);if(!(j.USER\u PASSWORD==tempUserPassword))---获取空异常{MessageLabel.Visible=true;MessageLabel.Text=“用户名/密码不正确”;}if(!(j.USER\u PASSWORD==tempUserPassword))null例外如果用户为FirstOrDefault,则如果未找到匹配项,则将返回null,因此首先检查j是否为!=在访问该实例的属性之前为null。可能没有任何项与该查询匹配。尝试通过使查询不区分大小写来拓宽范围。对c.USER_NAME和tempUserName都执行.ToLower(CultureInfo.InvariantCulture)请更详细地解释您的问题。即使我输入的数据应该与result=null匹配,如果您期望null,则可以使用Single()方法,但是为什么你会期望空值呢?不,我不期望空值,我期望它匹配,但是我得到空值,那么代码没有问题。您必须查找数据库绑定,或者使用linq时,表中的相应值实际上为null,当我使用原始代码而不使用where语句时,它可以工作,因为现在数据库中只有一个条目