检查ILookup中的键是否存在值的最佳方法<string,string =“”>使用linq </string,>

时间:2013-04-11 19:25:25

标签: c# linq c#-4.0 linq-to-entities

  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的新手,所以学习更好的方法

4 个答案:

答案 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对象上