C# 从列表中检索重复的值位置<;字符串>;在字典里

C# 从列表中检索重复的值位置<;字符串>;在字典里,c#,list,dictionary,C#,List,Dictionary,如果这是一个重复的问题,我深表歉意,但是关于检索重复值对键值的类似问题没有深入到我理解如何使用它的程度 我目前正在使用包含文本的列表字典,并使用List.Intersect将列表相互比较。我将如何获取两个列表中有重复项的键值?这是我的密码: private string findDuplicates(Dictionary<int, List<string>> lists) { List<string> intersection = new List&l

如果这是一个重复的问题,我深表歉意,但是关于检索重复值对键值的类似问题没有深入到我理解如何使用它的程度

我目前正在使用包含文本的列表字典,并使用List.Intersect将列表相互比较。我将如何获取两个列表中有重复项的键值?这是我的密码:

private string findDuplicates(Dictionary<int, List<string>> lists)
{
    List<string> intersection = new List<string>();
    int i;
    int j;
    for (i = 0; i < 13; i++)
    {
        for (j = i + 1; j < 13; j++)
        {
            intersection.Add(String.Join(" ", lists[i].Intersect(lists[j])).ToString());

        };
        //Attempt to retrieve value
        if (intersection.Count > 0)
        {
            numberOfDomainsTB.Text += "\nLocations:\nList " + i + " and List " + j;
        }
    };
但这并不能比较列表的内部值

谢谢。

私人字符串查找副本(字典列表)
private string findDuplicates(Dictionary<int, List<string>> lists)
{
    List<string> intersection = new List<string>();
    int i;
    int j;
    string compare = "";
    for (i = 0; i < lists.Count - 1; i++)
    {
        for (j = i + 1; j < lists.Count - 1; j++)
        {
            compare = String.Join(" ", lists[i].Intersect(lists[j])).ToString();
            if (!String.IsNullOrEmpty(compare))
            {
                intersection.Add(String.Join(" ", lists[i].Intersect(lists[j])).ToString());

            }
        };

    };
}
{ 列表交点=新列表(); int i; int j; 字符串比较=”; 对于(i=0;i
我通过实现这个交叉点来解决这个问题。Add将始终向列表中添加一个新值,不管它是否为空。因此,所做的任何比较都会显示每个列表的匹配项。所以我选择了两次相交:一次存储在一个字符串中,然后检查是否为null/empty,如果不是,则再次在相交处进行。添加行以实际添加相交值


注意:我最终不需要使用字典。这仅仅是以前执行这项任务的努力的残余。任何普通的列表都可以。

谷歌在那里,先看看周围。为什么
列表
是一本字典?您正在像数组或列表一样使用它。您的
//尝试….
在外部for循环中,有意吗?@HenkHolterman因为我需要知道哪些列表有哪些重复项,所以我需要为每个列表分配一个索引(我很抱歉将其称为ID,谢谢Henk)。有人建议我这样做。尝试在内部循环之外的逻辑是,这样我就可以正确地使用计数器值。当前正在内部循环中尝试。当您的ID可以由for循环枚举时,它们不是ID而是索引值。
private string findDuplicates(Dictionary<int, List<string>> lists)
{
    List<string> intersection = new List<string>();
    int i;
    int j;
    string compare = "";
    for (i = 0; i < lists.Count - 1; i++)
    {
        for (j = i + 1; j < lists.Count - 1; j++)
        {
            compare = String.Join(" ", lists[i].Intersect(lists[j])).ToString();
            if (!String.IsNullOrEmpty(compare))
            {
                intersection.Add(String.Join(" ", lists[i].Intersect(lists[j])).ToString());

            }
        };

    };
}