我有一个Dictionary<int, List<Tuple<string, string>>> L
,我想在其中找到所有键,以便相应的值List<Tuple<string, string>>
具有元组,使得Item1和Item2等于某些给定值“ toto”,并且“塔塔”。
我尝试如下:
var res = L.Where(x => x.Value.ToList().Where(y => y.Item1 == "toto" &&
(string) y.Item2 == "tata").Any()).Select(x => x.Key).ToList();
我对代码行中的错误处理不满意:Where
的某些中间结果是null等。实现此目的的普通c#方法是什么?
答案 0 :(得分:4)
这应该有效。
var d = new Dictionary<int, List<Tuple<string, string>>>();
...
var keys = d.Where(x => x.Value.Any(y => y.Item1 == val1 && y.Item2 == val2))
.Select(x => x.Key);
如果您担心空列表
var keys = d.Where(x => x.Value != null && x.Any(y => y.Item1 == val1 && y.Item2 == val2))
.Select(x => x.Key);
或者使用更好的名称Tuples
var d = new Dictionary<int, List<(string val1, string val2)>();
...
var keys = d.Where(x => x.Value != null && x.Value.Any(y => y.val1 == val1 && y.val2 == val2))
.Select(x => x.Key);