2017-08-15 47 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())