C# 使用lambda表达式从c字典中筛选和检索数据

C# 使用lambda表达式从c字典中筛选和检索数据,c#,.net,linq,lambda,C#,.net,Linq,Lambda,我有ListA和ListA有ListB 我需要检索ListA的所有键,它在ListB中有一个特定的键 例如: 如果我给123作为listB的键,我应该得到 如果我给246作为ListB的键,我应该得到 ListA[0] ListA[1] 选择ListA的所有键,其中ListB.Key=123 努力表达 ListA.Values.Where(b => b.ListB.Key==123).Select(a=>a.Key) 错误:错误CS1061:“字典”不包含 “键”和无可访问扩展方法

我有ListA和ListA有ListB 我需要检索ListA的所有键,它在ListB中有一个特定的键

例如:

如果我给123作为listB的键,我应该得到

如果我给246作为ListB的键,我应该得到

ListA[0]

ListA[1]

选择ListA的所有键,其中ListB.Key=123

努力表达

ListA.Values.Where(b => b.ListB.Key==123).Select(a=>a.Key)
错误:错误CS1061:“字典”不包含 “键”和无可访问扩展方法“键”的定义 接受“Dictionary”类型的第一个参数可能会 是否缺少using指令或程序集引用

错误CS1061:“KeyValuePair”不包含 “ListB”和无可访问扩展方法的定义 可以找到接受“KeyValuePair”类型的第一个参数的ListB是否缺少using指令或 汇编参考

下面是类defn

class cListA

{
private Dictionary<string, double> ListB = new Dictionary<string, double>();

private string Desc;

public Dictionary<string, double> ListBvar
    {
        get
        {
            return ListB
        }
    }


    public string sDesc
    {
        get
        {
            return Desc
        }
    }
}

private Dictionary <string, cListA> ListA= new Dictionary <string, cListA>(); 

我明白了答案很简单

ListA.Values.Where(p=> 
       p.ListB.Values.Contains(123)).Select(a=>a.Key).ToList().

这些错误似乎并不反映代码。这是您的实际代码吗?实际代码与可能的不同变量名称相同,但错误并不反映您的错误code@SMD-你可以发布列表的类定义,并用有效的C代码提供初始数据吗?更新问题,不要在注释中添加代码这很好。请用有效的C代码中的示例数据更新您的问题,然后在这个答案中显示它如何为您获得正确的结果。我们致力于提供关于堆栈溢出的高质量问题和答案。
ListA.Where(p => p.ListB.Contains(123)).Select(p=> p.ListA.ToList()
class cListA

{
private Dictionary<string, double> ListB = new Dictionary<string, double>();

private string Desc;

public Dictionary<string, double> ListBvar
    {
        get
        {
            return ListB
        }
    }


    public string sDesc
    {
        get
        {
            return Desc
        }
    }
}

private Dictionary <string, cListA> ListA= new Dictionary <string, cListA>(); 
ListA.Values.Where(p=> 
       p.ListB.Values.Contains(123)).Select(a=>a.Key).ToList().