.net 4.5.2
我的词典以这种方式定义:
Dictionary<string, string> Dates = new Dictionary<string, string>();
它包含以下格式的键:
2016/4/23
2016/4/24
2016/4/25
2016/4/26
2016/3/1
2016/3/2
如何迭代我的字典中具有以下格式的所有键:
2016/4/*
答案 0 :(得分:3)
我不知道你在String类型中使用日期而不是使用DateTime类型。
无论如何,要回答你的问题,只需使用像这样的StartsWith扩展方法:
var aprilMonthKeys = Dates.Keys.Where(k => k.StartsWith("2016/4/"));
答案 1 :(得分:1)
使用
foreach(var record in Dates.Where(r => r.Key.Contains("2016/4/")))
{
// Do something.....
}
答案 2 :(得分:0)
如何迭代字典中的所有键
您可以使用字典的Keys
属性循环遍历每个Key
。
foreach(string key in Dates.Keys)
{
var date = DateTime.ParseExact(key, "yyyy/M/d", null);
if(date.Year == 2016 && date.Month == 4)
{
// logic
}
}
或者您也可以使用Linq
var filtered = dictionary.Keys.Where(k=>
{
var date = DateTime.ParseExact(k, "yyyy/M/d", null);
return date.Year == 2016 && date.Month == 4;
});
答案 3 :(得分:0)
如果密钥包含子字符串&#34; 2016/4 /&#34;您可以循环检查所有项目。并将密钥保存在另一个列表中。
List<string> keys= new List<string>();
foreach(var item in Dates)
{
if (item.Key.Contains("2016/4/")
keys.Add(item.Key);
}
答案 4 :(得分:0)
如果要使用指定的年份和月份过滤字典,则可以执行以下操作:
var filteredDates = Dates.Where(d =>
DateTime.ParseExact(d.Key, "yyyy/MM/dd", CultureInfo.InvariantCulture).Year == 2016 &&
DateTime.ParseExact(d.Key, "yyyy/MM/dd", CultureInfo.InvariantCulture).Month == 4).ToDictionary(d=>d.Key);
这将为您提供包含2016/04的日期的过滤词典