2010-11-05 6 views
2

considérant ce qui suit:Comment faire une requête dans LINQ? C#

public class Person 
{ 
    public Person(string fName, string lName) 
    { 
     this.firstName = fName; 
     this.lastName = lName; 
    } 

    public string firstName; 
    public string lastName; 
} 

class App 
{ 
    static void Main() 
    { 
     Person[] peopleArray = new Person[3] 
     { 
      new Person("John", "Smith"), 
      new Person("Jim", "Johnson"), 
      new Person("Sue", "Rabon"), 
     }; 
     // select lastName from peopleArray where firstName like '%'J'%' 
    } 
} 

LINQ, comment peut exprimer:

select lastName from peopleArray where firstName like '%'J'%' 

Je veux imprimer le lastnames de toute personne ayant "J" dans leur firstname. J'ai du mal à l'exprimer dans LINQ. Aide S'il vous plaît ....

Répondre

9
var query = from person in peopleArray 
      where person.firstName.Contains("J") 
      select person.lastName; 

// or 
var query = peopleArray.Where(p => p.firstName.Contains("J")).Select(p => p.lastName); 

// use results, print to screen? 
foreach (string lastName in query) 
{ 
    Console.WriteLine(lastName); 
} 
+0

Bonjour Monsieur encore! :) Merci d'avoir répondu. – yonan2236

+0

Désolé, mais comment l'imprimer monsieur? – yonan2236

+0

Impossible d'éditer le message pour une raison quelconque, mais si je le pouvais, je changerais 'select person.firstName' en' select person.lastName'. Pas une grosse affaire bien sûr. –

1
List<string> matchingLastNames = (from person in peopleArray 
            where person.firstName.Contains("J") 
            select person.lastName).ToList<string>(); 
+1

Il est correct d'être explicite, mais sachez que l'appel '.ToList()' n'a pas besoin du paramètre de type ''. Les méthodes génériques n'ont besoin du paramètre type que si le compilateur est incapable de le comprendre autrement, par exemple s'il n'y a pas de paramètres ou alternativement s'il y a plusieurs types de candidats. 'ToList()' a un paramètre, qui est le résultat de la requête. –

+0

ahh vous avez raison bien sûr! Vous apprenez toujours à exprimer plus élégamment et succinctement dans LINQ - votre contribution est appréciée :-) – BrokenGlass

-2

Je vous donne quelques conseils. 1. Apprendre quel est le délégué. 2.Découvrez l'expression lambda. 3.learn étendre les méthodes.

si vous les apprenez. vous pouvez écrire tout ce que vous voulez dans linq.

+0

On dirait quelque chose que l'un de mes profs dirait - en particulier, l'instructeur Java d'intro qui pensait que l'enseignement sur les garbage collectors et les compilateurs JIT était une excuse pour ne pas connaître la syntaxe Java lui-même. –

+1

désolé pour cela. ce jour-là j'ai une mauvaise lune, alors parlez bien –

Questions connexes