Всегда есть обязательная реализация LINQ. Скорее всего, производительность мусора, но с каких пор производительность способствовала использованию новых интересных функций?
var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
var sequence = from one in letters
from two in letters
from three in letters
from four in letters
orderby one, two, three, four
select new string(new[] { one, two, three, four });
'sequence' теперь будет IQueryable, который содержит AAAA для ZZZZ.
Edit:
Хорошо, так что это не давало мне покоя, что это должно быть возможно сделать последовательность настраиваемой длины с настраиваемым транслитерации с использованием LINQ. Так вот оно. Опять же, совершенно бессмысленно, но это подслушивало меня.
public void Nonsense()
{
var letters = new[]{"A","B","C","D","E","F",
"G","H","I","J","K","L",
"M","N","O","P","Q","R","S",
"T","U","V","W","X","Y","Z"};
foreach (var val in Sequence(letters, 4))
Console.WriteLine(val);
}
private IQueryable<string> Sequence(string[] alphabet, int size)
{
// create the first level
var sequence = alphabet.AsQueryable();
// add each subsequent level
for (var i = 1; i < size; i++)
sequence = AddLevel(sequence, alphabet);
return from value in sequence
orderby value
select value;
}
private IQueryable<string> AddLevel(IQueryable<string> current, string[] characters)
{
return from one in current
from character in characters
select one + character;
}
Вызов метода последовательности производит тот же самый AAAA в список ZZZZ, как и прежде, но теперь вы можете изменить словарь, используемый и как долго полученные слова будут.
Что вы пытаетесь сделать? Возможно, лучше создать список лениво, в зависимости от вашего ответа. – 2008-11-23 17:28:33
@John the Statistian: Использование блоков итератора * делает * генерировать список лениво. – 2008-11-23 17:50:05
Это может быть полезно при создании наивной логики грубой силы. Однажды я сделал что-то подобное для класса, где нам пришлось сломать шифр. Аналитическая техника была легкой, поэтому я также написал программу, которая использовала всю компьютерную лабораторию в колледже в течение нескольких часов раньше одного субботнего утра. :) – 2008-11-23 18:03:18