我正在尝试在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%正确。需要一些专家意见。
答案 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));
除此之外,我认为您的查询是正确的。