C# 程序似乎忽略了列表的其余部分

C# 程序似乎忽略了列表的其余部分,c#,foreach,C#,Foreach,我试图从c#中的对象列表中检索某个字符串(我们称之为list userlist)(该列表中有大约1600个元素,每个对象有大约15个不同的参数)。 这就是我的代码: private List<String> getGameList(CommandEventArgs e) { List<String> allgames = new List<string>(); List<User> userlist = e.Ser

我试图从c#中的对象列表中检索某个字符串(我们称之为list userlist)(该列表中有大约1600个元素,每个对象有大约15个不同的参数)。 这就是我的代码:

 private List<String> getGameList(CommandEventArgs e) {
        List<String> allgames = new List<string>();
        List<User> userlist = e.Server.Users.ToList();
        foreach (User u in userlist)
        {
            if (u.CurrentGame.ToString() != "")
            {
                if (u.CurrentGame.Value.Name != null)
                {
                    allgames.Insert(0, u.CurrentGame.Value.Name);


                }

            }

        }

        return allgames;


    }
私有列表getGameList(CommandEventArgs e){
列出所有游戏=新建列表();
List userlist=e.Server.Users.ToList();
foreach(用户列表中的用户u)
{
如果(u.CurrentGame.ToString()!=“”)
{
如果(u.CurrentGame.Value.Name!=null)
{
allgames.Insert(0,u.CurrentGame.Value.Name);
}
}
}
返回所有游戏;
}
但是,每当这段代码运行返回的列表时,其中只有一两个结果,而它应该检索更多的结果

要提供有关代码的更多信息,请执行以下操作:

  • 用户是一个对象,其下大约有15个参数/对象
  • u、 CurrentGame检索“用户”下名为“游戏”的对象
  • u、 CurrentGame.Value.Name是我要检索并添加到新“allgames”列表中的字符串
  • 我知道Insert(0,String)很奇怪,但出于某种原因,一个简单的.Add似乎也不能正常工作
你知道为什么我只有一两个结果而不是更多吗? 如果需要,我可以提供更多信息


谢谢你

没有看到完整的代码,我猜你可能在循环中的某个地方有一个早期的
返回
或者一个
中断
,你可能应该使用
继续
来继续遍历列表

您可能还应该使用
string.IsNullOrEmpty
,而不是与
进行比较


这就是我对您提供的信息所能提供的全部帮助。

我做了三个小实验,这三个实验都以某种方式起作用:

using System;
using System.Collections.Generic;
using System.Linq;

namespace p44785433
{
class Program
{
    static List<User> userList = UserFactory.GenerateUsers();
    static void Main(string[] args)
    {
        Console.WriteLine("Number Of Users: {0}", userList.Count);
        var x = getGameList(userList); // 1600 on output
        var y = getGameListUpdated(userList); // 1600< on output depend of randomized empty name
        var z = getGameListLinq(userList); // 1600< on output depend of randomized empty name
    }

    private static List<String> getGameList(List<User>  parUserList)
    {
        List<string> allgames = new List<string>();
        List<User> userlist = /*e.Server.Users.ToList();*/ parUserList;
        foreach (User u in userlist)
        {
            if (u.CurrentGame.ToString() != "")
            {
                if (u.CurrentGame.Value.Name != null)
                {
                    allgames.Insert(0, u.CurrentGame.Value.Name);
                }
            }
        }

        return allgames;
    }

    private static List<String> getGameListUpdated(List<User> parUserList)
    {
        List<string> allgames = new List<string>();
        List<User> userlist = /*e.Server.Users.ToList();*/ parUserList;
        foreach (User u in userlist)
        {
            if (!string.IsNullOrEmpty(u.CurrentGame.ToString()))
            {
                if (!string.IsNullOrEmpty(u.CurrentGame.Value.Name))
                {
                    allgames.Insert(0, u.CurrentGame.Value.Name);
                }
            }
        }

        return allgames;
    }

    private static List<String> getGameListLinq(List<User> parUserList)
    {            
        List<User> userlist = /*e.Server.Users.ToList();*/ parUserList;
        var x = userList.Where(r => !string.IsNullOrEmpty(r.CurrentGame.ToString()) && !string.IsNullOrEmpty(r.CurrentGame.Value.Name)); // remove empty
        var y = x.Select(r => r.CurrentGame.Value.Name); // select strings
        var z = y.Reverse(); // reverse order instead of insert

        return z.ToList();
    }
}

internal class User
{
    public Game CurrentGame { get; set; }
    public string Par1 { get; set; }
    public string Par2 { get; set; }
    public string Par3 { get; set; }
    public string Par4 { get; set; }
    public string Par5 { get; set; }
    public string Par6 { get; set; }
    public string Par7 { get; set; }
    public string Par8 { get; set; }
    public string Par9 { get; set; }
    public string Par10 { get; set; }
    public string Par11 { get; set; }
    public string Par12 { get; set; }
    public string Par13 { get; set; }
    public string Par14 { get; set; }

    internal static User CreateDummy()
    {
        return  new User()
        {
            CurrentGame = Game.CreateDummy(),
            Par6 = UserFactory.Rnd.NextDouble().ToString(),
            Par12 = UserFactory.Rnd.NextDouble().ToString()
        };
    }
}


internal static class UserFactory
{
    static Random _rnd;
    internal static Random Rnd
    {
        get
        {
            if (_rnd == null) _rnd = new Random();
            return _rnd;
        }
    }
    internal static List<User> GenerateUsers()
    {
        List<User> list = new List<User>();

        for (int i = 0; i < (int)1600; i++)
        {
            list.Add(User.CreateDummy());
        }

        return list;
    }
}

internal class Game
{
    public Value Value { get; set; }

    public string Par1 { get; set; }
    public string Par2 { get; set; }
    public string Par3 { get; set; }
    public string Par4 { get; set; }
    public string Par5 { get; set; }
    public string Par6 { get; set; }
    public string Par7 { get; set; }
    public string Par8 { get; set; }
    public string Par9 { get; set; }
    public string Par10 { get; set; }
    public string Par11 { get; set; }
    public string Par12 { get; set; }
    public string Par13 { get; set; }
    public string Par14 { get; set; }

    public override string ToString()
    {
        return Par6;
    }

    internal static Game CreateDummy()
    {
        return new Game()
        {
            Value = Value.CreateDummy(),
            Par6 = UserFactory.Rnd.NextDouble().ToString(),
            Par12 = UserFactory.Rnd.NextDouble().ToString()
        };
    }
}

internal class Value
{
    public string Name { get; set; }
    public string Par1 { get; set; }
    public string Par2 { get; set; }
    public string Par3 { get; set; }
    public string Par4 { get; set; }
    public string Par5 { get; set; }
    public string Par6 { get; set; }
    public string Par7 { get; set; }
    public string Par8 { get; set; }
    public string Par9 { get; set; }
    public string Par10 { get; set; }
    public string Par11 { get; set; }
    public string Par12 { get; set; }
    public string Par13 { get; set; }
    public string Par14 { get; set; }

    internal static Value CreateDummy()
    {
        return new Value()
        {
            Name = (UserFactory.Rnd.Next(10)!=0 ? string.Format("XXA{0}XAA", UserFactory.Rnd.NextDouble()): string.Empty),
            Par5 = UserFactory.Rnd.NextDouble().ToString(),
            Par11 = UserFactory.Rnd.NextDouble().ToString()
        };
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
名称空间p44785433
{
班级计划
{
静态列表userList=UserFactory.GenerateUsers();
静态void Main(字符串[]参数)
{
WriteLine(“用户数:{0}”,userList.Count);
var x=getGameList(userList);//输出时为1600
var y=getGameListUpdated(userList);//1600<取决于随机空名称的输出
var z=getGameListLinq(userList);//1600<取决于随机空名称的输出
}
私有静态列表getGameList(列表parUserList)
{
列出所有游戏=新建列表();
List userlist=/*e.Server.Users.ToList();*/parUserList;
foreach(用户列表中的用户u)
{
如果(u.CurrentGame.ToString()!=“”)
{
如果(u.CurrentGame.Value.Name!=null)
{
allgames.Insert(0,u.CurrentGame.Value.Name);
}
}
}
返回所有游戏;
}
私有静态列表getGameListUpdated(列表parUserList)
{
列出所有游戏=新建列表();
List userlist=/*e.Server.Users.ToList();*/parUserList;
foreach(用户列表中的用户u)
{
如果(!string.IsNullOrEmpty(u.CurrentGame.ToString()))
{
如果(!string.IsNullOrEmpty(u.CurrentGame.Value.Name))
{
allgames.Insert(0,u.CurrentGame.Value.Name);
}
}
}
返回所有游戏;
}
私有静态列表getGameListLinq(列表parUserList)
{            
List userlist=/*e.Server.Users.ToList();*/parUserList;
var x=userList.Where(r=>!string.IsNullOrEmpty(r.CurrentGame.ToString())&&!string.IsNullOrEmpty(r.CurrentGame.Value.Name));//删除空
var y=x.Select(r=>r.CurrentGame.Value.Name);//选择字符串
var z=y.Reverse();//颠倒顺序而不是插入
返回z.ToList();
}
}
内部类用户
{
公共游戏CurrentGame{get;set;}
公共字符串Par1{get;set;}
公共字符串Par2{get;set;}
公共字符串Par3{get;set;}
公共字符串Par4{get;set;}
公共字符串Par5{get;set;}
公共字符串Par6{get;set;}
公共字符串Par7{get;set;}
公共字符串Par8{get;set;}
公共字符串Par9{get;set;}
公共字符串Par10{get;set;}
公共字符串Par11{get;set;}
公共字符串Par12{get;set;}
公共字符串Par13{get;set;}
公共字符串Par14{get;set;}
内部静态用户CreateDummy()
{
返回新用户()
{
CurrentGame=Game.CreateDummy(),
Par6=UserFactory.Rnd.NextDouble().ToString(),
Par12=UserFactory.Rnd.NextDouble().ToString()
};
}
}
内部静态类UserFactory
{
静态随机;
内部静态随机Rnd
{
得到
{
如果(_rnd==null)_rnd=new Random();
回报率;
}
}
内部静态列表生成器()
{
列表=新列表();
对于(int i=0;i<(int)1600;i++)
{
添加(User.CreateDummy());
}
退货清单;
}
}
内部类游戏
{
公共值{get;set;}
公共字符串Par1{get;set;}
公共字符串Par2{get;set;}
公共字符串Par3{get;set;}
公共字符串Par4{get;set;}
公共字符串Par5{get;set;}
公共字符串Par6{get;set;}
公共字符串Par7{get;set;}
公共字符串Par8{get;set;}
公共字符串Par9{get;set;}
公共字符串Par10{get;set;}
公共字符串Par11{get;set;}
公共字符串Par12{get;set;}
公共字符串Par13{get;set;}
公共字符串Par14{get;set;}
公共重写字符串ToString()
{
返回Par6;
}
内部静态游戏CreateDummy()
{
雷图