搜索字典值并返回满足条件的键列表
Posted
技术标签:
【中文标题】搜索字典值并返回满足条件的键列表【英文标题】:Search dictionary values and return List of keys meeting conditions 【发布时间】:2017-12-08 19:27:18 【问题描述】:我在搜索这样的字典时遇到问题。
Dictionary<string, string[]> dic = new Dictionary<string, string[]>()
"a", new string[]()"a_val","2",
"b", new string[]()"b_val","1",
"b", new string[]()"b_val","0"
;
我需要返回一个键列表,其中 stingArray[1] 元素的值大于“1”,例如:
List<string> list = new List<string>
"a"
;
因为我不太擅长使用 LINQ,所以我目前的解决方案是遍历 Dictionary 并将键添加到新列表中。但这种方法看起来很丑陋,我正在尝试寻找另一种解决方案。
【问题讨论】:
双星号(**)代表什么? @CasparKleijne 未应用 bold 格式 ????. 我想突出显示该索引,但这在代码格式中不起作用。我会删除它。 虽然您现在已经接受了将来的答案,但请始终添加您正在使用的代码。向我们展示您当前的方法,解释您不喜欢的地方,然后提出您的问题。如果没有其他任何东西向我们展示您当前工作的代码,那是一种文档形式,可确保人们准确了解解决方案需要做什么。 您可能需要考虑使用 Dictionary没有任何错误处理:
var list = dic.Where(x => int.Parse(x.Value[1]) > 1)
.Select(x => x.Key)
.ToList();
使用Where
语句,将过滤Value[1]
大于1 的条目,使用Select
语句,将选择来自该条目的键。至少该集合将使用ToList
方法转换为List
。
更多信息请查看101 LINQ Samples in C#
【讨论】:
谢谢你,它工作得很好,这些样本很棒。【参考方案2】:试试这个(你的字典定义有一些编译错误,我做了一些猜测):
static void Main(string[] args)
var dic = new Dictionary<string, string[]>()
"a", new string[]"a_val","2",
"b", new string[] "b_val","1",
"c", new string[] "b_val","0";
string[] expected = dic
.Where(kv => Convert.ToInt32(kv.Value[1]) > 1)
.Select(kv => kv.Key).ToArray();
【讨论】:
以上是关于搜索字典值并返回满足条件的键列表的主要内容,如果未能解决你的问题,请参考以下文章
SQL 查询:如果满足搜索条件,则应返回单条记录,否则返回多条记录