我有两个单独的lists
; List<datetime>
&amp;分别为List<string>
。例如:
我希望在List<datetime>
=“A”时获得string
。
我确实创建了一个dictionary<List<datetime>,string>
但是它根据keys
找到了values
。
答案 0 :(得分:3)
您希望根据特定密钥跟踪日期。那么,你想要做的是:
Dictionary<string, List<DateTime>>
这样。您可以拥有特定字符串的值列表。
e.g。 A -> 1/1/2017, 1/2/2017, 1/3/2017
var dictionary = new Dictionary<string, List<DateTime>>();
//populate your dictionary
dictionary.Add("cat", new List<DateTime>{DateTime.Now, DateTime.Now.AddDays(1)});
if (dictionary.ContainsKey("cat"))
{
var dates = dictionary["cat"];
//now you have access to those dates
}
答案 1 :(得分:2)
你应该做下面的事情,基本上扭转你的关键和价值。
var dateTimeByStringLookup = new Dictionary<string, List<DateTime>>()
{
{"a", new List<DateTime>() {new DateTime(2017, 1, 2), new DateTime(2017, 1, 3)}}
};
var datetimes = new List<DateTime>();
dateTimeByStringLookup.TryGetValue("a", out datetimes);
答案 2 :(得分:1)
这样的东西?假设列表与列表中的索引匹配。
var list1 = new List<DateTime> {new DateTime(2000,1,1), new DateTime(2000, 1, 2), new DateTime(2000, 1, 3), new DateTime(2004, 5, 10) };
var list2 = new List<string> {"A", "B" , "A" , "A" };
var output = list1.Zip(list2, (time, str) => new {time, str})
.Where(o => o.str == "A") // Change to the string you want to filter
.Select(o => o.time)
.ToList();
foreach (var dateTime in output) {
Console.WriteLine(dateTime);
}
Console.ReadKey();
答案 3 :(得分:0)
foreach(KeyValuePair<string, List<DataTime>> kvp in dictionary)
{
if(kvp.Value == listImLookingFor)
{
var key = kvp.Key;
}
}