C# 为什么我不能打印此列表?

C# 为什么我不能打印此列表?,c#,web-services,C#,Web Services,这是我第一次处理web服务。我是一名新的C#开发人员,我正在尝试从web服务检索用户信息。我可以连接到web服务并检索信息。现在,我正在打印公司不同级别的用户列表。问题是我遇到了这种错误,我不知道: foreach语句无法对“UserLib.UserDate”类型的变量进行操作,因为“UserLib.UserData”不包含“GetEnumerator”的公共定义。 我有一个名为UserLib的类库项目,其中有两个类 用户数据类代码: namespace UserLib { public

这是我第一次处理web服务。我是一名新的C#开发人员,我正在尝试从web服务检索用户信息。我可以连接到web服务并检索信息。现在,我正在打印公司不同级别的用户列表。问题是我遇到了这种错误,我不知道: foreach语句无法对“UserLib.UserDate”类型的变量进行操作,因为“UserLib.UserData”不包含“GetEnumerator”的公共定义。

我有一个名为UserLib的类库项目,其中有两个类

用户数据类代码:

namespace UserLib
{
    public class UserData
    {
        public string username { get; set; }
        public string fullName { get; set; }
        public string email { get; set; }
        public string jobTitle { get; set; }
        public string levelCode { get; set; }
    }
}
namespace UserLib
{
    public class GetUserData
    {
        public UserData getUserData(string login)
        {

            var dat = new UserData //UserData object
            {
                username = response.Username,
                fullName = response.FullName,
                email = response.Email,
                jobTitle = response.Title,
                levelCode = levelCode,
                           };
            return dat;
        }
    }
}
GetUserData类代码:

namespace UserLib
{
    public class UserData
    {
        public string username { get; set; }
        public string fullName { get; set; }
        public string email { get; set; }
        public string jobTitle { get; set; }
        public string levelCode { get; set; }
    }
}
namespace UserLib
{
    public class GetUserData
    {
        public UserData getUserData(string login)
        {

            var dat = new UserData //UserData object
            {
                username = response.Username,
                fullName = response.FullName,
                email = response.Email,
                jobTitle = response.Title,
                levelCode = levelCode,
                           };
            return dat;
        }
    }
}
程序类代码:

class Program
    {
        static void Main(string[] args)
        {
                        Console.WriteLine("Please enter the username: ");
                        Console.WriteLine(" ");
                        Console.Write("Username: ");
                        var login = Console.ReadLine();

                            var getUser = new GetUserData();
                            var dat = getUser.getUserData(login);  // <== class library call

                            Console.WriteLine("Username:   " + dat.username);
                            Console.WriteLine("Full Name:   " + dat.fullName);
                            Console.WriteLine("Email:   " + dat.email);
                            Console.WriteLine("Job Title:   " + dat.jobTitle);
                            Console.WriteLine("Level Code:   " + dat.levelCode);
                            Console.WriteLine("------------------------");
                            printAll(login);
}
类程序
{
静态void Main(字符串[]参数)
{
Console.WriteLine(“请输入用户名:”);
控制台。写线(“”);
控制台。写入(“用户名:”;
var login=Console.ReadLine();
var getUser=new GetUserData();

var dat=getUser.getUserData(login);//
UserData
不像
List
那样是一个
IEnumerable
,它只是一个对象。 您需要一个返回
IEnumerable

嗯……您的
开关看起来多余

第一个
案例
级联到第二个
案例
。第二个
案例
的作用与第三个相同。。 那么为什么不直接使用
output.Add(users.userName);


假设实际代码是您粘贴的代码。

UserData
列表
不同,它只是一个对象。 您需要一个返回
IEnumerable

嗯……您的
开关看起来多余

第一个
案例
级联到第二个
案例
。第二个
案例
的作用与第三个相同。。 那么为什么不直接使用
output.Add(users.userName);


假设实际代码是您粘贴的。

您的
getUserData
方法不返回用户列表,它返回单个
UserData
(一个用户的详细信息),因此您不能期望像一个集合一样迭代此返回值


另一方面,在
UserData

上使用PascalCase作为方法名和属性名。您的
getUserData
方法不返回用户列表,它返回单个
UserData
(一个用户的详细信息),因此,您不能期望将此返回值作为一个集合进行迭代


另一方面,请在
UserData

上使用PascalCase作为方法名和属性名。我没有看到任何列表…我看到getUserData方法只返回一个未实现IEnumerable的对象。为什么要对其执行foreach?我没有看到任何列表…我看到getUserData方法只返回一个s不实现IEnumerable的单个对象。为什么要对其执行foreach?您能给我一个修改它的示例,以便能够同时重新运行单个值和列表吗?我不知道您为什么要这样做..但简单的答案是将返回值包装到另一个类中。您能给我一个示例吗为了能够同时重新运行单个值和列表,需要修改它吗?我不知道为什么要这样做..但简单的答案是将返回值包装到另一个类中。