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忽略我的提醒。今天我只是想尽快把事情做完,因为这些步骤打乱了我的流程,我不得不三次回到选项卡上。我现在就试试!我昨晚测试了这个,并编辑了使它对我起作用的更改。非常感谢你的帮助!我现在就试试!我昨晚测试了这个,并编辑了使它对我起作用的更改。非常感谢你的帮助!