Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 序列包含多个元素异常,但数据库中只有一个元素异常_C#_Database_Asp.net Mvc 4_Linq To Sql_Invalidoperationexception - Fatal编程技术网

C# 序列包含多个元素异常,但数据库中只有一个元素异常

C# 序列包含多个元素异常,但数据库中只有一个元素异常,c#,database,asp.net-mvc-4,linq-to-sql,invalidoperationexception,C#,Database,Asp.net Mvc 4,Linq To Sql,Invalidoperationexception,我构建了一个查询,通过用户名查找用户。当我运行程序时,我得到: InvalidOperationException:序列包含多个元素 我检查了测试数据库,只有4个用户,没有双重名称。例外从何而来?以下是查询: public void setUser(String userName) { AzaraUser = DatabaseConnection.DataContext.GetTable<AzaraUser>() .SingleOrDefaul

我构建了一个查询,通过用户名查找用户。当我运行程序时,我得到:

InvalidOperationException:序列包含多个元素

我检查了测试数据库,只有4个用户,没有双重名称。例外从何而来?以下是查询:

public void setUser(String userName)
{
    AzaraUser = DatabaseConnection.DataContext.GetTable<AzaraUser>()
                .SingleOrDefault(a => a.ProgramUserName == userName || a.UserName == userName);
}

只有当存在多个记录时,才会发生此异常。 请尝试在SQLServerManagementStudio或任何您拥有的工具中运行查询,或者尝试调试代码并查看用户名的值。 e、 g

或者尝试:

public List<AzaraUser> setUser(String userName)
{
 AzaraUser = DatabaseConnection.DataContext.GetTable<AzaraUser>().WHERE(a => a.ProgramUserName == userName || a.UserName == userName).ToList<AzaraUser>();
}
public List setUser(字符串用户名)
{
AzaraUser=DatabaseConnection.DataContext.GetTable()。其中(a=>a.ProgramUserName==userName | | a.userName==userName)。ToList();
}

错误非常明显。尝试将
SingleOrDefault
更改为
Where
,并将
ToList
添加到末尾,然后在下一行放置断点,以便查看返回的实际行

AzaraUser = DatabaseConnection.DataContext.GetTable<AzaraUser>()
            .Where(a => a.ProgramUserName == userName || a.UserName == userName)
            .ToList();
AzaraUser=DatabaseConnection.DataContext.GetTable()
.其中(a=>a.ProgramUserName==用户名| | a.userName==用户名)
.ToList();

此外,还要确保您连接到的是测试数据库,而不是记录重复的其他数据库。

他说没有重复的名称。我发现了为什么我会得到不止一个结果,而问题在代码中出现得稍早一些。目前我不确定为什么会发生这种情况,所以我用informations.WebSecurity.CurrentUserName将字符串“”补充我的问题。这是在数据库中搜索。数据库中目前有4条记录。只有一条记录有ProgramUserName,所有其他记录在此行中都有null。我现在通过一个变通办法解决了这个问题,所以程序正在运行,但我想知道WebSecurity在什么时候获得登录用户的用户名。
public List<AzaraUser> setUser(String userName)
{
 AzaraUser = DatabaseConnection.DataContext.GetTable<AzaraUser>().WHERE(a => a.ProgramUserName == userName || a.UserName == userName).ToList<AzaraUser>();
}
AzaraUser = DatabaseConnection.DataContext.GetTable<AzaraUser>()
            .Where(a => a.ProgramUserName == userName || a.UserName == userName)
            .ToList();