2010-11-05 2 views
2

Учитывая следующее:Как запросить это в 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, как можно выразить следующим образом:

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

Я хочу напечатать lastnames всего лица, имеющего "J" в их firstname. Мне сложно выразить это в LINQ. Помогите пожалуйста ....

ответ

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

Здравствуйте, сэр снова! :). Спасибо за ответ. – yonan2236

+0

Извините, но как мне его распечатать сэр? – yonan2236

+0

Невозможно отредактировать сообщение по какой-либо причине, но если бы я мог, я бы изменил 'select person.firstName' на' select person.lastName'. Конечно, не очень. –

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

Это нормально, чтобы быть явным, но знайте, что вызов '.ToList()' не нужен параметр типа ''. В общих методах нужен только параметр типа, если компилятор не может понять его в противном случае, например, если нет параметров или поочередно, если есть несколько кандидатов типа. 'ToList()' имеет параметр, являющийся результатом запроса. –

+0

ах, ты, конечно, прав! Все еще учась выражать более элегантно и лаконично в LINQ - ваш вклад приветствуется :-) – BrokenGlass

-2

Я дам вам несколько советов. 1.подготовьте, что такое делегат. 2.Полезное выражение лямбда. методы расширения 3.learn.

если вы узнаете об этом. вы можете написать все, что вам нравится в linq.

+0

Похоже на то, что сказал бы один из моих профессоров - в частности, интро-инструктор Java, который считал, что обучение сборщикам мусора и компиляторам JIT было оправданием для того, чтобы не знать сам синтаксис Java. –

+1

извините за это. в этот день у меня плохая луна, так что говори прямо –

Смежные вопросы