6
  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") 

应该返回真

bool status = someList.Where(x => x.Key == "Football").Where( y => y.Value == "Venus williams")

应该返回假

ILookup 没有 value 属性,而不是循环,有没有更聪明的方法可以在几行中获得结果。上面的代码是不正确的,如果可能的话,希望有类似的东西。我是 Linq 的新手,所以学习更好的方法

4

4 回答 4

7

从属性返回的对象ILookup<TKey, TElement>.Item(当你这样做时调用它someList[...])是一个IEnumerable<TElement>. 因此,您可以将每个项目直接与您的测试值进行比较。像这样:

var status = someList["Football"].Any(y => y == "Venus Williams");
于 2013-04-11T19:29:28.187 回答
2
bool status = someList.Where(x => x.Key == "Football").Any( y => y.Value == "Venus williams")
于 2013-04-11T19:29:19.747 回答
1

怎么样:

var status = someList.Any(grp => grp.Key.Equals("Football") && grp.Contains("Venus Williams"));

说明:ILookup 是 IGrouping 的 IEnumerable - 分组具有Key 属性,并且字符串值的列表

于 2016-09-23T10:38:35.853 回答
0

我会用.Any(x => x.Value == "value").

可能是错的,但我认为您希望分两步完成,检查第一个(键)搜索是否成功,然后继续进行值搜索,以确保您没有.Any()null对象进行操作

于 2013-04-11T19:30:32.207 回答