ILookup<string, string> someList;
Cricket Sachin
Dravid
Dhoni
Football Beckham
Ronaldo
Maradona
bool status = someList.Where(x => x.Key == "Football").Where( y => y.Value == "Ronaldo")
应该返回true
bool status = someList.Where(x => x.Key == "Football").Where( y => y.Value == "Venus williams")
应该返回false
ILookup没有值属性,而不是循环,有没有一种更聪明的方法来获得几行结果。上面的代码是不对的,如果可能的话,希望有类似的东西。我是Linq的新手,所以学习更好的方法
答案 0 :(得分:7)
从ILookup<TKey, TElement>.Item
属性返回的对象(执行someList[...]
时调用的对象)是IEnumerable<TElement>
。因此,您可以将每个项目直接与测试值进行比较。像这样:
var status = someList["Football"].Any(y => y == "Venus Williams");
答案 1 :(得分:2)
bool status = someList.Where(x => x.Key == "Football").Any( y => y.Value == "Venus williams")
答案 2 :(得分:1)
怎么样:
var status = someList.Any(grp => grp.Key.Equals("Football") && grp.Contains("Venus Williams"));
说明:ILookup是IGrouping的IEnumerable - 分组具有 Key属性,而是字符串值列表
答案 3 :(得分:0)
我会使用.Any(x => x.Value == "value")
。
可能是错的,但我认为你想分两步完成,然后检查第一个(关键)搜索是否成功,然后继续重视搜索以确保你没有做.Any()
在null
对象上