嗨,我有一个this对象
public class Field
{
public int Id { get; set; }
public string Name { get; set; }
}
Dictionary<string, List<Field>> fields = new Dictionary<string, List<Field>>();
fields.Add(
"pippo",
new List<Field>() {
new Field() { Name = "1" },
new Field() { Name = "2" },
new Field() { Name = "3" }
});
fields.Add(
"pluto",
new List<Field>() {
new Field() { Name = "1" },
});
fields.Add(
"paperino",
new List<Field>() {
new Field() { Name = "3" }
});
我希望从字典中删除名称字段中没有字符串"1“的值中的所有键,如下例所示
fields: key "pippo" value { { Name = "1" }, { Name = "2" }, { Name = "3" } }
key "pluto" value { { Name = "1" }}
发布于 2018-05-31 17:46:37
一种方法是使用linq:
var result = fields
.Where(f => f.Value.Any(x => x.Name == "1"))
.ToDictionary(k => k.Key, v => v.Value);
请注意,这不会改变原来的字典,但会返回一个新的字典。如果您想更改原始字典,只需使用它而不是var result
- fields = fields.Where....
发布于 2018-05-31 17:49:38
使用后跟ToDictionary
的Where
调用
fields = fields.Where(x => x.Value.Any(y => y.Name == "1"))
.ToDictionary(x => x.Key, x => x.Value);
https://stackoverflow.com/questions/50621214
复制相似问题