c# - 在Dictionary中的List中的Object中查找元素值

时间:2013-11-20 13:44:16

标签: c# list object dictionary find

我目前需要创建类似的字典:

public Dictionary<MyFirstObject, List<MySecondObject>> _reference { get; set; }

这两个对象存储在此过程中需要匹配的数据。这就是我使用词典的原因。对象看起来像这样:

public class MyFirstObject
{
    public string _element1 ;
    public MyThirdObject _element2;

    public MyFirstObject(string element1, MyThirdObject element2)
    {
        _element1 = element1;
        _element2 = element2;
    }
}
public class MySecondObject
{
    public string _element3;
    public string _element4;
    public string _element5;

    public MySecondObject(string element3, string element4, string element5)
    {
        _element3 = element3;
        _element4 = element4;
        _element5 = element5;
    }
}

我希望得到包含一些数据的“ MyFirstObject ”,例如我成功找到“ _element1 ”,我得到了相关的“< strong> MyFirstObject “此请求:

MyFirstObject mfo = _reference.FirstOrDefault(z => z.Key._element1 == "mySearch").Key

此代码有效!我认为我可以很容易地找到_element2而没有问题。 现在,我想对“ Dictionary.Value ”做同样的事情,例如找到“ _element3 ”。

我试过这段代码:

MyFirstObject mfo = _reference.FirstOrDefault(x => x.Value.FirstOrDefault(z => z._element3 == "mySearch")).Key;

我最后使用了“ .Key ”,因为我想获得此请求的相对“ MyFirstObject ”。但是这个请求不起作用。

你可以帮我成功吗?

由于

编辑:错误消息是:“无法将类型'MySecondObject'隐式转换为'bool'

1 个答案:

答案 0 :(得分:1)

var result = _reference.FirstOrDefault(x => 
                      x.Value.Any(z => z._element3 == "mySearch"));
if (result.Key != null)
    MyFirstObject mfo = result.Key;