Используя LINQ, что efficent путь состоит в том, чтобы получить каждую строку из разграниченного вкладкой .txt файла (и затем получить каждое слово, обычно что строка. Разделение (...) делает)?
var v = from line in File.ReadAllLines()
select n
Часть этого решения, которому я верю. Я не возражаю, если это использует возврат урожая.
Править: Я также видел потоки при здесь детализации точно, что я пытаюсь сделать, но не могу найти их.
Я не совсем понимаю, о чем вы спрашиваете, но похоже, что вы пытаетесь получить каждое слово из файла с разделителями табуляции как IEnumerable
. Если это так, попробуйте следующее
var query = File.ReadAllLines(somePathVariable)
.SelectMany(x => x.Split(new char[] { '\t' });
Я успешно сделал это, создав растровое изображение, а затем изменив его размер... Я не уверен, что это лучший или самый эффективный способ сделать это, но он работает на меня.
В моем случае мне нужно было разрезать высоту и ширину изображения наполовину.
Вот что я сделал.
private Image getImageFromBytes(byte[] myByteArray)
{
System.IO.MemoryStream newImageStream = new System.IO.MemoryStream(myByteArray, 0, myByteArray.Length);
Image image = Image.FromStream(newImageStream, true);
Bitmap resized = new Bitmap(image, image.Width / 2, image.Height / 2);
image.Dispose();
newImageStream.Dispose();
return resized;
}
-121--1276263- Я нахожусь в одной лодке с вами, занимаясь большим количеством приложений бизнес-типа, ничего «веселого», как игры, компиляторы или поисковые системы.
Ваш пробег будет отличаться, но, по крайней мере, по моему собственному опыту, многие команды разработчиков неохотно прыгают прямо в F #, потому что никто другой в команде не знает и даже не слышал об этом. И сразу же перед битой приходится бороться с такими вопросами, как «что это делает иначе, чем C #?» Если вы можете убедить своего босса позволить вам написать несколько демонстрационных приложений с ним, перейдите к этому!
При этом я нахожу, что C # не очень хорош в бизнес-правилах, но он обрабатывает GUI как чемпион; Неизменность F # делает разработку GUI неловкой, но бизнес-правила и рабочие процессы чувствуют себя естественно. Таким образом, два языка имеют свои сильные стороны и комплиментарны слабости друг друга.
В моих собственных приложениях LOB F # выполняет кружки вокруг C # в нескольких областях: асинхронные рабочие процессы
F # и процессоры почтовых ящиков на порядки проще в работе, чем собственные потоки и даже параллельная библиотека задач. С момента использования процессоров почтовых ящиков для межсетевой связи, я даже не помню, когда в последний раз мне приходилось блокировать или thread.join () что-либо для синхронизации вообще.
Определение механизмов бизнес-правил и DSL с объединениями FTW! Каждое нетривиальное приложение LOB, над которым я когда-либо работал, имеет свой язык и интерпретатор с полукоженными правилами, и почти всегда основано на рекурсивном включении перечисления, чтобы пройтись по правилам и найти совпадение. Текущий проект, который у меня есть, теперь содержит более 1300 общедоступных классов, 900 или около того являются простыми классами контейнеров для представления правила. Я думаю, что представление правил как профсоюза F # значительно уменьшит вздутие кода и сделает лучший двигатель.
Неизменяемый код просто работает лучше - если вы получаете новый объект с недопустимым состоянием, вам не нужно искать далеко, чтобы найти нарушающую строку кода, все, что вам нужно знать, находится в стеке вызовов. Если у вас есть изменяемый объект с недопустимым состоянием, иногда приходится тратить много времени на его отслеживание. Вы можете написать неизменяемый код в C #, но его действительно трудно не упасть на мутабельность, особенно когда вы изменяете объект в цикле.
Я ненавижу нули. Я не могу дать точную оценку, но кажется, что половина ошибок, которые мы получаем в производстве, являются пустыми ссылочными исключениями - объект неправильно инициализирован, и вы не знаете об этом до тех пор, пока у вас не будет 30 стековых кадров в коде. Я думаю, что F # поможет нам написать больше свободного кода с первого раза.
C # обычно хорошо работает, когда:
Вы пишете GUI-код или работаете с изменяемыми по своей сути системами.
Предоставление DLL или веб-службы множеству различных клиентов.
Ваш босс не позволит вам использовать инструменты, которые вы хотите;)
Поэтому, если вы сможете преодолеть "почему мы хотим использовать новое языковое препятствие", я думаю, что F # действительно облегчит вашу жизнь.
-121--1332807-Использование File.ReadAllLines является простым - но не обязательно наиболее эффективным, поскольку он считывает всю строку в память.
Краткая версия, вероятно, будет:
var wordsPerLine = from line in File.ReadAllLines(filename)
select string.Split(line, '\t');
foreach(var line in wordsPerLine)
{
foreach(word in line)
{
// process word...
}
}
Если вы хотите, чтобы один перечисляемый из слов, вы можете использовать