2015-05-08 2 views
1

Я очень новичок в LINQ, и мне интересно, есть ли способ извлечь подсписчик из списка строк, учитывая, что строковые значения предоставляются заранее.Генерация подсписок списка заданных строк

Например, если у меня есть:

var movies = new List<Movie> 
{ 
    new Movie { Name = "Noah" }, 
    new Movie { Name = "Terminator" }, 
    new Movie { Name = "Troy" }, 
    new Movie { Name = "Gladiator" }, 
}; 

Я хотел бы использовать LINQ для создания подсписка если указать имя строки «Ной» и «Троя».

Я пробовал поиск в Интернете и результаты указывают мне на SelectMany и GroupBy, но все примеры включают списки, содержащие примитивные значения, а не значения примитивов, содержащиеся в объектах.

+0

Что именно вы имеете в виду? Просто 'List ', который содержит 'Movie' с свойством 'Name', соответствующим списку строк, в которые вы проходите? –

+1

фильмы - это не список строк. – Steve

ответ

1

Использование Linq лямбда было бы:

var result = movies.where(x => x.Name == "Troy" || x.Name == "Noah"); 

Это возвращает IEnumerable<Movie>, содержащий те искали с помощью Where.

+0

Буквально он не возвращает 'List ' но 'IEnumerable ' –

+0

@ w.b а вы правы! Изменит его :) – Max

+0

Это работает! Провел так много часов, пытаясь его решить. Спасибо огромное! – nnguye32

3

Это вы что искали?

var sublistItems = new List<string>() {"Noah", "Troy"} ; 
var subList = movies.where(m=> sublistItems.Contains(m.Name)); 
2
var newlist = from m in movies 
       where (m.Name == "Troy" || m.Name == "Noah") 
       select m; 
Смежные вопросы