使用 LINQ 将属性值与字典键匹配

假设我有这两个简单的类:


public class MyObject

{

    public string name;

    public string objectProperty;

    [other properties]

}


public class Referencer

{

    public string name;

    public Dictionary<string, object> objectDictionary;

}

和 MyObject 实例的列表:


List<MyObject> myObjects = new List<MyObject>

{

    new MyObject(name: "name1", objectProperty: "objectProperty1", other properties...),

    new MyObject(name: "name2", objectProperty: "objectProperty2", other properties...),

    new MyObject(name: "name3", objectProperty: "objectProperty3", other properties...),

    other myObjects...

}

以及这样的字典字典:


Dictionary<string, Dictionary<string, object>> sampleDictionary = new Dictionary<string, Dictionary<string, object>>

{

    {"name3", new Dictionary<string, object> { {"property1", "value1"}, {"property2", "value2"}  }  },

    {"name2", new Dictionary<string, object> { {"property3", "value3"}, {"property4", "value4"}  }  },

    {"name1", new Dictionary<string, object> { {"property5", "value5"}, {"property6", "value6"}  }  },

    other entries...

};

我需要能够根据规则创建List<Referencer>匹配:myObjectssampleDictionary


myObjects.name == sampleDictionary.Key

我尝试过使用 LINQ ForEach, Where, ToDictionary,但我认为我这里缺少一些东西,需要你的帮助。


慕森王
浏览 68回答 1
1回答

偶然的你

稍微扩充一下:myObjects     .Where(x => sampleDictionary.ContainsKey(x))     .Select(x => new Referencer { name = x.name, objectDictionary = sampleDictionary[x.name] });
打开App,查看更多内容
随时随地看视频慕课网APP