2016-04-20 3 views
0

-Code zum Parameter:Linq-Abfrage, wo jedes Element aus Liste <int> gehört string []

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 

Meine Klasse hat folgende Eigenschaften:

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

Wie kann ich Abfrage schreiben, um diese Arbeit zu machen?

Edit:

ich unklar sein könnte, wie Sie in den Kommentaren erwähnt, so ist stattdessen auf diesem Code konzentrieren lassen:

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-Objekt ist:

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

Warum funktioniert es nicht arbeiten? Welchen Fehler bekommst du? Und was ist der Filter-Datentyp? Was ist 'Baumeister'? – Ian

+0

Es gibt MongoDB C# -Treiber Zeug, sollte es klarer haben, aber sagen wir mal, es ist der Typ, wo Sie .Where Anweisungen verwenden können. – bombek

+0

Was sind die Fehler, die Sie bekommen? Fehler erstellen? Ausnahmen? Bitte füge sie in deinen Beitrag oben ein. – rinukkusu

Antwort

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

Kann für den Code downlyed nur antworten! –

Verwandte Themen