2016-04-20 14 views
0

コード:LINQクエリ[]

string[] seperators = { "," }; 
string[] typesList = types.Split(seperators, StringSplitOptions.RemoveEmptyEntries); 
string[] topicsList = topics.Split(seperators, StringSplitOptions.RemoveEmptyEntries); 

if (typesList.Length > 0) 
    filter = filter & builder.Where(t => typesList.Contains(t.Type)); 
if (topicsList.Length > 0) 
    filter = filter & builder.Where(t => topicsList.Any(id => t.Topics.Any(p => id == p.ToString()))); 
    // above doesn't work 

私のクラスには、これらのプロパティがあります。

public List<int> Topics { get; set; } 
public string Type { get; set; } 

私はこの仕事をするためにクエリを記述できますか?

編集:あなたは、コメントで述べたように、私は不明かもしれ

それでは、代わりにこのコードに焦点を当ててみましょう:

var list = new List<MyClass>(); 
list = LoadElements(); 
string[] parametr = { "8", "11" }; 

var result = list.Where(pm => pm.Topics.Any(t=> t.Equals(8) == true)).ToList(); 
//this above works for static '8' but I want to query through my 'parametr' list. 

MyClassのオブジェクトは、次のとおりです。

public class MyClass 
{ 
    public string Data { get; set; } 
    public List<int> Topics{ get; set; } 
} 
+5

なぜそれがありませんうまくいかない?どのようなエラーが出ますか? 'filter'データ型は何ですか?ビルダーとは何ですか? – Ian

+0

MongoDB C#のドライバがありますが、もっと明確にすべきですが、それはあなたがどこのステートメントを使うことができるタイプだとしましょう。 – bombek

+0

エラーは何ですか?ビルドのエラー?例外?上記のあなたのポストにそれらを含めてください。 – rinukkusu

答えて

0
var result = list.Where(record => parametr.Any(parm => record.Topics.Any(t => parm == t.ToString()))).ToList(); 
+0

コードを解答するためにdownvotedすることができます! –