2017-08-15 3 views
0

現在、C#MongoDB DriverとLinqを使用してクエリ結果を返そうとしています。私は、パラメータとして文字列のリストを取り込んで記述しようとしていますC#、Linq、およびMongoを使用して文字列のリストを照会する方法

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

機能:私はを解析しようとしています、次のJSONを持っています。目的は、スキル配列内の1つ以上のオブジェクトが、リストを介して渡される1つ以上の文字列と同じ名前を持つMongoドキュメントのリストを返すことです。

私は、一連の埋め込まれた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ドライバを使って文字列のリストをparamsとして使用して質問することができますか?

答えて

3
collection.AsQueryable<ApplicationUser>() 
.Where(user => 
    user.Skills 
    .Select(s => s.Name) 
    .Intersect(skills) 
    .Any()) 
関連する問題