基于值查找关联键-字典C#

基于值查找关联键-字典C#,c#,dictionary,C#,Dictionary,我有两个独立的列表列表和列表。例如: {1/1/2000,A} {1/2/2000,B} {1/3/2000,A} {5/10/2004,A} 当字符串=“A”时,我想得到列表。 我确实创建了一个字典,但是它基于值查找键 您希望根据特定键跟踪日期。所以,你要做的是: Dictionary<string, List<DateTime>> 您希望根据特定键跟踪日期。所以,你要做的是: Dictionary<string, List<DateTime>&

我有两个独立的
列表
<代码>列表和
列表
。例如:

  • {1/1/2000,A}
  • {1/2/2000,B}
  • {1/3/2000,A}
  • {5/10/2004,A}
字符串
=“A”时,我想得到
列表

我确实创建了一个
字典
,但是它基于
查找

您希望根据特定键跟踪日期。所以,你要做的是:

Dictionary<string, List<DateTime>>

您希望根据特定键跟踪日期。所以,你要做的是:

Dictionary<string, List<DateTime>>

你应该做如下的事情,基本上颠倒你的键和值

  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);
var dateTimeByStringLookup=newdictionary()
{
{“a”,new List(){new DateTime(2017,1,2),new DateTime(2017,1,3)}
};
var datetimes=新列表();
dateTimeByStringLookup.TryGetValue(“a”,out datetimes);

您应该执行以下操作,基本上是反转您的键和值

  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);
var dateTimeByStringLookup=newdictionary()
{
{“a”,new List(){new DateTime(2017,1,2),new DateTime(2017,1,3)}
};
var datetimes=新列表();
dateTimeByStringLookup.TryGetValue(“a”,out datetimes);

像这样的东西?假设列表由列表中的索引匹配

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();
var list1=new List{new DateTime(2000,1,1)、new DateTime(2000,1,2)、new DateTime(2000,1,3)、new DateTime(2004,5,10)};
var list2=新列表{“A”、“B”、“A”、“A”};
var output=list1.Zip(list2,(time,str)=>new{time,str})
.Where(o=>o.str==“A”)//更改为要筛选的字符串
.选择(o=>o.time)
.ToList();
foreach(输出中的var dateTime){
Console.WriteLine(日期时间);
}
Console.ReadKey();

像这样的东西?假设列表由列表中的索引匹配

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();
var list1=new List{new DateTime(2000,1,1)、new DateTime(2000,1,2)、new DateTime(2000,1,3)、new DateTime(2004,5,10)};
var list2=新列表{“A”、“B”、“A”、“A”};
var output=list1.Zip(list2,(time,str)=>new{time,str})
.Where(o=>o.str==“A”)//更改为要筛选的字符串
.选择(o=>o.time)
.ToList();
foreach(输出中的var dateTime){
Console.WriteLine(日期时间);
}
Console.ReadKey();
foreach(字典中的KeyValuePair kvp)
{
if(kvp.Value==listImLookingFor)
{
var key=kvp.key;
}
}
foreach(字典中的KeyValuePair kvp)
{
if(kvp.Value==listImLookingFor)
{
var key=kvp.key;
}
}


实际上,您可以使用字典根据
键查找
值。
字典
可能就是您想要使用的。如果这些值位于两个列表中,则在您执行类似操作以确定其他值之前,它们将不相关。是否尝试使用字典?字符串应该是您的
键,因为这是您正在搜索的对象。
键是第一个通用参数。您应该按照@Jim的建议,在
字典中反转您的泛型参数。correct@ymz。如果我创建dict(),我将如何处理?实际上,您将使用字典根据
键查找
值。
字典
可能就是您想要使用的。如果这些值位于两个列表中,则在您执行类似操作以确定其他值之前,它们将不相关。是否尝试使用字典?字符串应该是您的
键,因为这是您正在搜索的对象。
键是第一个通用参数。您应该按照@Jim的建议,在
字典中反转您的泛型参数。correct@ymz。如果我创建了dict(),那么如何处理列表中的日期是随机的。。。这将如何处理?我不知道填充日期时间列表背后的逻辑。而且,你不应该在意它。这是一个例子。您只关心密钥以及如何访问这些随机日期;一个带有日期,另一个带有这些日期上的事件(字符串)。由于这是两个独立的数据集,我需要以某种方式将它们连接在一起,以便能够说:;查找此“特定事件”发生的所有日期。在您的解决方案中,我不仅需要添加“cat”,还需要首先检查“cat”是否发生在该日期@路易斯莱维耶里,你能给我一些建议吗?我们在谈论多少个事件?日期和事件之间是一对一的关系吗?它们来自数据库吗?它们属于具有相同id的同一个表?假设在特定日期最多有5个事件。是的,在数据库中相同id的同一个表中。日期相同,特定事件的时间可能不同。列表中的日期是随机的。。。这将如何处理?我不知道填充日期时间列表背后的逻辑。而且,你不应该在意它。这是一个例子。您只关心密钥以及如何访问这些随机日期;一个带有日期,另一个带有这些日期上的事件(字符串)。由于这是两个独立的数据集,我需要以某种方式将它们连接在一起,以便能够说:;查找此“特定事件”发生的所有日期。在您的解决方案中,我不仅需要添加“cat”,还需要首先检查“cat”是否发生在该日期@路易斯莱维耶里,你能给我一些建议吗?我们在谈论多少个事件?日期和事件之间是一对一的关系吗?它们来自数据库吗?它们属于具有相同id的同一个表?假设在特定日期最多有5个事件。是的,在数据库的同一个表中,具有相同的id。日期将是相同的,特定事件的时间可能不同。这正是我所需要的。在这个特定场景中,使用字典会使其变得复杂。谢谢@Student222@user715