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

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


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();

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


月关宝盒
浏览 101回答 1
1回答

白衣非少年

如果我了解您想要的结果,您可能只需使用Values,SelectMany和Where。var&nbsp;result&nbsp;=&nbsp;teamkillCounter.SelectMany(x&nbsp;=>&nbsp;x.Value.Where(y&nbsp;=>&nbsp;y.killerName.Contains("bobo")));Dictionary<TKey,TValue>.Values财产获取包含 Dictionary 中的值的集合。Enumerable.SelectMany方法将序列的每个元素投影到 anIEnumerable<T>并将结果序列展平为一个序列。
打开App,查看更多内容
随时随地看视频慕课网APP