我有以下类结构
public class Document
{
[BsonId]
public MongoDB.Bson.ObjectId _id { get; set; }
public MongoDB.Bson.ObjectId Id
{
get;
set;
}
private List<KeywordModel> _domain;
public string DocumentName { get; set; }
public int FileSize { get; set; }
public string DocumentType { get; set; }
public string ContentType { get; set; }
public string DateTime { get; set; }
public List<KeywordModel> Domain {
get { return this._domain; }
set { this._domain = value;}
}
public Document()
{
this._domain = new List<KeywordModel>();
}
}
public class KeywordModel
{
public string Keyword { get; set; }
public int Frequency { get; set; }
}
我有一个父文档类的集合,如:List<Document>
。我想写一个LINQ查询,它将采用List<string>
并与KeywordModel.Keyword
的属性匹配。此外,它会从Document
返回List<Document>
的集合。
答案 0 :(得分:0)
所有至少包含1个关键字的文档:
List<string> keywords = ...;
IEnumerable<Document> allDocuments = null;
var documents = allDocuments.Where(d => d.Domain.Any(kw => keywords.Contains(kw.Keyword))).ToList();
答案 1 :(得分:0)
非Linq方法:
您可以使用List<T>
的FindAll-Methods。例如:
List<string> matches = new List<string> {"test", "test2", "test3"};
documentList.FindAll(d => d.Domain.Exists(keyModel => matches.Contains(keyModel.KeyWord)));