将Lambda与词典结合使用

时间:2009-07-01 16:39:30

标签: c# linq lambda

我正在尝试使用LINQ从字典中检索一些数据。

    var testDict = new Dictionary<int, string>();
    testDict.Add(1, "Apple");
    testDict.Add(2, "Cherry");

    var q1 = from obj in testDict.Values.Where(p => p == "Apple");
    var q2 = from obj in testDict.Where(p => p.Value == "Apple");

上面的行q1和q2都会导致编译错误。

error CS0742: A query body must end with a select clause or a group clause

如何使用LINQ在字典中查找值?

谢谢,

瑞克

2 个答案:

答案 0 :(得分:24)

无论

var q1 = from obj in testDict.Values where obj == "Apple" select obj;

var q1 = testDict.Where(p => p.Value == "Apple");

答案 1 :(得分:8)

你的陈述中有一个额外的“来自obj in”,这是不需要的。删除它或将.Where更改为linq查询语法而不是方法语法。

var q1 = from obj in testDict.Values
         where obj.Value == "Apple"
         select obj;    
var q2 = testDict
         .Where(p => p.Value == "Apple");