2015-07-04 27 views
1

我有一个字符串列表的字符串,我想选择所有那些包含(在任何位置的所有字母的)一些字母 我试过下面的代码Linq的语句来选择包含所有字母

selWords = wordlist.Where(x.IndexOfAny("aeo".ToCharArray()) != -1).ToList(); 

它给了我所有包含任何的aeo字母的话,但我需要那些包含了所有这些信件的

回答

3
string test1 = "sdfasdosdfe"; 
string test2 = "sdfasdasodfeasdfasd"; 
string test3 = "sdfsdfsdfsdfds"; 
string searchString = "aeo"; 

List<string> wordList = new List<string>() { test1, test2, test3 }; 
IEnumerable<string> resultList = 
    wordList.Where(q => searchString.ToCharArray().All(p => q.Contains(p))); 
+0

字符串实现'IEnumerable的'所以我们不需要明确地转换为'char []'。 – Alexey

0

你需要做的

selWords = wordlist.Where(x => x.IndexOfAny("a".ToCharArray()) != -1 
           && 
           x.IndexOfAny("e".ToCharArray()) != -1 
           && 
           x.IndexOfAny("o".ToCharArray()) != -1).ToList(); 
1

我建议你使用Linq为

var result = from word in wordlist 
where word .Contains("a") && word .Contains("e") && word .Contains("o") 
select word; 
1

好了,解决方法有很多,下面是我觉得最优雅的一个:

var matches = wordlist.Where(w => "aeo".All(l => w.Contains(l)));