2016-11-24 2 views
0

Durch den obigen Code kann ich Details für mehrere Keywords erhalten, aber gleichzeitig möchte ich Datensätze von einzelnen Keyword auch erhalten.Suche nach einzelnen und mehreren Schlüsselwörtern sowohl aus einzelnen Textbox

Bitte jemand mir helfen, Vielen Dank im Voraus

+4

nicht im Zusammenhang mit dein Problem, aber ... warum in aller Welt schreibst du das? _if (count <= Convert.ToInt16 ("5")) _ – Steve

+1

Wenn der Code bereits mit mehreren Suchwörtern funktioniert, erwarte ich, dass er auch für einen einzelnen funktioniert (wenn 's.split (',')' nur einen zurückgibt)). Wenn nicht, musst du erklären, was falsch läuft. –

+0

Nicht ist, sagt kein Datensatz gefunden, durch einzelnes Schlüsselwort –

Antwort

0

den folgenden Codeausschnitt Siehe auf einer vereinfachten Aufgabe zugrunde:

class MatrixModel { 
    public string ProfileId {get; set;} 
    public string Caste {get; set;} 
    public string Country {get; set;} 
    public string City {get; set;} 
    public string Occupation {get; set;} 
    public string MotherTongue {get; set;} 
} 

public static void Main() 
{ 
    var db = new MatrixModel[]{ 
     new MatrixModel { 
      ProfileId = "1", 
      Caste = "Caste1", 
      Country = "USA", 
      City = "Miami", 
      Occupation = "System administrator", 
      MotherTongue = "English" 
     }, 
     new MatrixModel { 
      ProfileId = "2", 
      Caste = "Caste1", 
      Country = "India", 
      City = "Mumbai", 
      Occupation = "developer", 
      MotherTongue = "English" 
     },  
     new MatrixModel { 
      ProfileId = "3", 
      Caste = "Caste1", 
      Country = "England", 
      City = "London", 
      Occupation = "developer", 
      MotherTongue = "English" 
     },    
    }; 
    string s = "Caste1, England"; 
    string[] words = s.Split(','); 
    int count = words.Length; 

    if (count <= 5) 
    { 
       IEnumerable<MatrixModel> KeyWord = db; 
       foreach(var par in words) 
       { 
        var parTrimmed = par.Trim(); 
        KeyWord = KeyWord 
         .Where(x => x.Caste == parTrimmed 
          || x.Country == parTrimmed 
          || x.City == parTrimmed 
          || x.Occupation == parTrimmed 
          || x.MotherTongue == parTrimmed); 
       } 

       var result = KeyWord.Select(x => new 
        { 
         ProfileID = x.ProfileId, 
        }).ToList(); 

       foreach(var item in result){ 
        Console.WriteLine(item); 
       } 
     } 
} 

Das Ergebnis ist folgendes:

{ ProfileID = 3 } 
+0

Ich schlug '||' vor, aber wurde vom OP verneint. Das "count <= 5" deutet an, dass die Schlüsselwörter für jede Spalte sein sollen - da auch 5 Spalten geprüft werden - aber es könnte möglicherweise weniger sein, wo es ein Problem imo gibt. Wenn die Suchschlüsselwörter getrennt wären ,, Entwickler, 'könnten wir etwas hacken ... – bixarrio

+0

Ich denke, das Problem der OP hat mit' || 'ist, dass, wenn er alle 'Entwickler' von 'Mumbai' will und Schlüsselwörter verwendet '" Entwickler, Mumbai "' das Ergebnis wird falsche Datensätze enthalten – bixarrio

+0

Warum müssen wir eine Klasse erstellen, bereits haben wir alle Daten in Tabellen ex: (x.tblCaste.Caste) usw. –

Verwandte Themen