2017-08-15 45 views
0

目前,我正在尝试使用C#MongoDB驱动程序和Linq来返回查询结果。我有以下的JSON,我试图通过解析:如何使用C#,Linq和Mongo查询字符串列表

{ 
    "_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驱动程序使用字符串列表作为参数吗?

回答

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