在字典中的字典中搜索
本文关键字:字典 搜索 | 更新日期: 2023-09-27 17:59:00
我有一个定义如下的字典:
Dictionary<int, Dictionary<string, object>> dict = new Dictionary<..>();
还有一个添加数据的示例代码:
dict.Add (X, new Dictionary<string, object> ());
dict [X].Add ("Car", CarObject);
dict [X].Add ("Seller", SellerObject);
dict [X].Add ("Key3", Z);
我想在内部字典中搜索它是否包含一个对象,然后包含以下内容关键字"Car"的CarObject.Name = (wildcard)X1(wildcard)
,但我似乎无法掌握如何进入内部字典,然后使用LINQ进入对象以搜索值。
这将返回所有匹配的KeyValuePair<string, object>
。
var query = dict.SelectMany(d => d.Value)
.Where(i => i.Key == "Key1"
&& (
i.Value is CarObject
? ((CarObject)i.Value).Name.Contains("X1")
: false
));
尝试以下操作:
var results = dict[X].Where(x => (x.Value is CarObject) && ((CarObject)x.Value).Name.Contains("X1"));
如果你只想得到值而不是字典,并打印值,你可以这样做:
int X = 0, Z = 1;
dict[X].Add("Key1", CarObject);
dict[X].Add("Key2", SellerObject);
dict[X].Add("Key3", Z);
var results = dict[X].Where(x => (x.Value is CarObject) && ((CarObject)x.Value).Name.Contains("X1")).Select(x => x.Value);
foreach (var str in results)
Console.WriteLine(str);
您可以尝试以下操作:
dict[X].Where(x => x.Value is CarObject && ((CarObject)x.Value).Name.Contains("X1"));
或者:
dict[X].Values.OfType<CarObject>().Any(x => x.Name.Contains("X1"))