我有以下单词列表:
List<string> words = new List<string>();
words.Add("abet");
words.Add("abbots"); //<---Return this
words.Add("abrupt");
words.Add("abduct");
words.Add("abnats"); //<--return this.
words.Add("acmatic");
我想返回6个字母的所有单词,以字母“a”开头,并且“t”作为第5个字母,结果应该返回单词“abbots”和“abnats”。
var result = from w in words
where w.StartsWith("a") && //where ????
我需要添加什么条款来满足第5个字母的't'要求?
答案 0 :(得分:7)
var result = from w in words
where w.Length == 6 && w.StartsWith("a") && w[4] == 't'
select w;
答案 1 :(得分:1)
您可以使用索引器:
where w.StartsWith("a") && w.Length > 5 && w[4] == 't'
如果没有Length
检查,这将为较小的单词抛出异常。
请记住,索引器是从零开始的。
答案 2 :(得分:1)
// Now return all words of 6 letters that begin with letter "a" and has "t" as
// the 5th letter. The result should return the words "abbots" and "abnats".
var result = words.Where(w =>
// begin with letter 'a'
w.StartsWith("a") &&
// words of 6 letters
(w.Length == 6) &&
// 't' as the 5th letter
w[4].Equals('t'));
答案 3 :(得分:1)
我测试了以下代码,它给出了正确的结果:
var result = from w in words
where w.StartsWith("a") && w.Length == 6 && w.Substring(4, 1) == "t"
select w;
答案 4 :(得分:1)
在回答修改后的问题时,如果要查看最后两个字母,可以使用EndWith方法或指定要检查的索引。正如SLaks指出的那样,如果你使用索引,那么你还必须检查长度,以确保较小的单词不会导致问题。
List<string> words = new List<string>();
words.Add("abet");
words.Add("abbots"); //<---Return this
words.Add("abrupt");
words.Add("abduct");
words.Add("abnats"); //<--return this.
words.Add("acmatic");
var result1 = from word in words
where word.Length == 6 && word.StartsWith("a") && word.EndsWith("ts")
select word;
var result2 = from word in words
where word.Length == 6 && word.StartsWith("a") && word[4] == 't' && word[5] == 's'
select word;