Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# 如何使用LINQ从地图内的列表中进行选择?_C#_Linq - Fatal编程技术网

C# 如何使用LINQ从地图内的列表中进行选择?

C# 如何使用LINQ从地图内的列表中进行选择?,c#,linq,C#,Linq,我正在尝试。从存储在字典中的列表中选择特定元素 internal Dictionary<string, List<Teamkill>> teamkillCounter = new Dictionary<string, List<Teamkill>>(); class Teamkill { public string killerName; public string killerSteamId; public TeamRo

我正在尝试。从存储在字典中的列表中选择特定元素

internal Dictionary<string, List<Teamkill>> teamkillCounter = new Dictionary<string, List<Teamkill>>();

class Teamkill
{
    public string killerName;
    public string killerSteamId;
    public TeamRole killerTeamRole;
    public string victimName;
    public string victimSteamId;
    public TeamRole victimTeamRole;
    public DamageType damageType;
}

// quotedArgs[1] is the killer name being searched for

// First attempt
List<Teamkill> teamkills = this.plugin.teamkillCounter.Select(x => x.Value.Select(y => y.killerName.Contains(quotedArgs[1])).Cast<List<Teamkill>>()).Cast<List<Teamkill>>().Single();

// Second attempt
List<Teamkill> teamkills = new List<Teamkill>();
teamkills = this.plugin.teamkillCounter.Values.SelectMany(x => x).ToList();
teamkills = teamkills.Where(y => y.killerName.Contains(quotedArgs[1])).ToList();

理想情况下,它应该返回与杀手姓名匹配的所有团队杀手的列表。

如果我了解您想要的结果,您可能只需要使用,并且

获取包含中的值的集合 字典

internal Dictionary<string, List<Teamkill>> teamkillCounter = new Dictionary<string, List<Teamkill>>();

class Teamkill
{
    public string killerName;
    public string killerSteamId;
    public TeamRole killerTeamRole;
    public string victimName;
    public string victimSteamId;
    public TeamRole victimTeamRole;
    public DamageType damageType;
}

// quotedArgs[1] is the killer name being searched for

// First attempt
List<Teamkill> teamkills = this.plugin.teamkillCounter.Select(x => x.Value.Select(y => y.killerName.Contains(quotedArgs[1])).Cast<List<Teamkill>>()).Cast<List<Teamkill>>().Single();

// Second attempt
List<Teamkill> teamkills = new List<Teamkill>();
teamkills = this.plugin.teamkillCounter.Values.SelectMany(x => x).ToList();
teamkills = teamkills.Where(y => y.killerName.Contains(quotedArgs[1])).ToList();
将序列的每个元素投影到IEnumerable并展平 将结果序列转换为一个序列


如果我理解你想要的结果,你可能只需要使用,和

获取包含中的值的集合 字典

internal Dictionary<string, List<Teamkill>> teamkillCounter = new Dictionary<string, List<Teamkill>>();

class Teamkill
{
    public string killerName;
    public string killerSteamId;
    public TeamRole killerTeamRole;
    public string victimName;
    public string victimSteamId;
    public TeamRole victimTeamRole;
    public DamageType damageType;
}

// quotedArgs[1] is the killer name being searched for

// First attempt
List<Teamkill> teamkills = this.plugin.teamkillCounter.Select(x => x.Value.Select(y => y.killerName.Contains(quotedArgs[1])).Cast<List<Teamkill>>()).Cast<List<Teamkill>>().Single();

// Second attempt
List<Teamkill> teamkills = new List<Teamkill>();
teamkills = this.plugin.teamkillCounter.Values.SelectMany(x => x).ToList();
teamkills = teamkills.Where(y => y.killerName.Contains(quotedArgs[1])).ToList();
将序列的每个元素投影到IEnumerable并展平 将结果序列转换为一个序列


@迈克尔·兰德尔:是的,别理我的名字。今天我只是想尽快把事情做完,我不得不回到账单上三次,因为这些步骤打乱了我的流程。@MichaelRandall Yeah忽略我的提醒。今天我只是想尽快把事情做完,因为这些步骤打乱了我的流程,我不得不三次回到选项卡上。我现在就试试!我昨晚测试了这个,并编辑了使它对我起作用的更改。非常感谢你的帮助!我现在就试试!我昨晚测试了这个,并编辑了使它对我起作用的更改。非常感谢你的帮助!