Linq查询从List获取计数

时间:2014-04-14 10:48:40

标签: c# linq c#-4.0

我正在尝试在c#中为以下场景构建LINQ查询。

  

"给定特定令牌"以识别其中的文件数量   它存在"

private List<Document> documents = new List<Document>();

class Document
{
    string filename;
    public string FileName { get { return filename; } }
    Dictionary<string, int> tokens;
    public Dictionary<string, int> Tokens { get { return tokens; } }

    public Document(string filename, Dictionary<string, int> tokens)
    {
        this.filename = filename;
        this.tokens = tokens;
    }
}

据我所知,我想出了这个表达式:

documents.Where(d => d.Tokens.Keys.Any(k => k == word)).Count();

但我不确定它是否100%正确。需要一些专家意见。

2 个答案:

答案 0 :(得分:3)

要使用字典的O(1)查找时间,您应该使用ContainsKey

documents.Count(d => d.Tokens.ContainsKey(word));

答案 1 :(得分:1)

您实际上可以使用Count方法执行过滤:

documents.Count(d => d.Tokens.Keys.Any(k => k == word));

除此之外,我认为您的查询是正确的。