2015-05-08 42 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创建一个子列表,如果我提供的名称字符串“诺亚”和“特洛伊”。

我试过Google搜索和结果指向我SelectMany和GroupBy,但所有的例子都涉及包含原始值的列表,而不是包含在对象中的原始值。

+0

你究竟是什么意思?只是一个'List ',其中包含'Movie's'Name'属性与您传入的字符串列表匹配? –

+1

电影不是字符串列表。 – Steve

回答

1

使用LINQ拉姆达这将是:

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

这将返回一个包含搜索使用Where的那些一个IEnumerable<Movie>

+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; 
相关问题