C# 名为ColumnOrdinal的列已属于该数据表

C# 名为ColumnOrdinal的列已属于该数据表,c#,asp.net,.net,list,C#,Asp.net,.net,List,有时我的代码捕捉到以下异常,但我找不到原因。这是随机发生的,如果我再次调用API,错误就会消失,数据也会被很好地获取 System.Data.DuplicateNameException:“名为'ColumnOrdinal'的列已属于此数据表。” 下面是代码示例。是否有导致重复的因素?此外,我搜索了整个代码,但在整个解决方案中没有名为ColumnOrdinal的列 public static List<Users> GetUsersList() { try {

有时我的代码捕捉到以下异常,但我找不到原因。这是随机发生的,如果我再次调用API,错误就会消失,数据也会被很好地获取

System.Data.DuplicateNameException:“名为'ColumnOrdinal'的列已属于此数据表。”

下面是代码示例。是否有导致重复的因素?此外,我搜索了整个代码,但在整个解决方案中没有名为ColumnOrdinal的列

public static List<Users> GetUsersList()
{
    try
    {
        List<Users> allUsers = null;
        DataTable dtResult = Data.GetUserList();
        if (dtResult != null)
        {
            allUsers = new List<Users>(dtResult.Rows.Count);
            Users oneUser;

            foreach (DataRow row in dtResult.Rows)
            {
                oneUser = new Users()
                {
                    userId = Convert.ToInt32(row["USER_ID"]),
                    userName = Convert.ToString(row["USER_NAME"]),                          

                };
                allUsers.Add(oneUser);
            };
        }
        return allUsers;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}
公共静态列表GetUsersList()
{
尝试
{
List alluser=null;
DataTable dtResult=Data.GetUserList();
if(dtResult!=null)
{
allUsers=新列表(dtResult.Rows.Count);
用户一个用户;
foreach(dtResult.Rows中的数据行)
{
oneUser=新用户()
{
userId=Convert.ToInt32(第[“用户ID”]”行),
userName=Convert.ToString(行[“用户名]),
};
添加(一个用户);
};
}
回归诱惑;
}
捕获(例外情况除外)
{
掷骰子;
}
}

是否在多个线程上调用此方法?可能是你自己走的路。问题在于它是一个静态列表。正如另一位评论员所指出的,当它试图将数据添加到同一个数据表时,您是在自食其果。这可能有助于让你了解检查列的顺序。另外,用户名后面是否需要逗号?好的。该方法未在多个线程上调用,但我可以检查静态列表更改。是否在多个线程上调用此方法?可能是你自己走的路。问题在于它是一个静态列表。正如另一位评论员所指出的,当它试图将数据添加到同一个数据表时,您是在自食其果。这可能有助于让你了解检查列的顺序。另外,用户名后面是否需要逗号?好的。该方法不会在多个线程上调用,但我可以检查静态列表的更改。