如何使用C#,Linq和Mongo查询字符串列表

时间:2017-08-15 19:09:26

标签: c# mongodb linq

目前,我正在尝试使用C#MongoDB驱动程序和Linq来返回查询结果。我有以下JSON,我试图解析:

{
    "_id": {
        "$oid": "598b25038dcc43a92cdb24e3"
    },    
    "Skills": [
        {
            "ID": 1,
            "Name": "test"
        },
        {
            "ID": 2,
            "Name": "test2"
        },
        {
            "ID": 3,
            "Name": "test3"
        }
    ]    
}

我尝试编写的函数将字符串列表作为参数。目标是返回一个Mongo文档列表,其中Skills数组中的一个或多个对象的名称等于通过列表传入的一个或多个字符串。

我提出了以下快速解决方案,该解决方案使用了一堆嵌入式foreach循环,但我认为这不是最佳选择。我想用Linq做以下的事情:

            var query =
                from a in collection.AsQueryable<ApplicationUser>()
                where a.Skills.ForEach(applicantSkill => skills.Contains(applicantSkill.Name))
                select a;
            return query;

但这显然会引发错误。任何人都可以指出我正确的方向使用Linq / C#Mongo驱动程序使用字符串列表作为参数查询?

1 个答案:

答案 0 :(得分:4)

collection.AsQueryable<ApplicationUser>()
.Where(user => 
    user.Skills
    .Select(s => s.Name)
    .Intersect(skills)
    .Any())