Я построил переменную, проанализировав текстовый файл с помощью некоторых адресов.LINQ Заменить различные строковые значения
FileInfo fi = new FileInfo(@"C:\temp\Addresses.txt")
var ZipCodesAndCountryCodes = File.ReadLines(fi.FullName)
.Select(l => new
{
ZipCode = l.Substring(1395, 5),
CountryCode = String.IsNullOrWhiteSpace(l.Substring(1405,30))
? "US"
: l.Substring(1405,30)
});
В этом коде я заменяю пустое значение для страны на «США». Однако я также хочу нормализовать его до «США», если страна «Соединенные Штаты» или «Соединенные Штаты Америки» или «США». Как я могу это сделать в LINQ? Если это какая-либо другая страна, она должна быть включена как есть.
Скорость также является соображением, так как текстовые файлы, которые будут обрабатываться, будут составлять 800 МБ. Спасибо за любую помощь.
Update1: Я получаю эту ошибку, когда я попытался ответить Марка и Aush в:
System.ObjectDisposedException: Cannot read from a closed TextReader.
at System.IO.__Error.ReaderClosed()
at System.IO.StreamReader.ReadLine()
at System.IO.File.<InternalReadLines>d__0.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Lookup`2.Create[TSource](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
at System.Linq.GroupedEnumerable`3.GetEnumerator()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at AnthemMDTS.Program.Main(String[] args) in c:\Projects\CustomerA\CustomerATax\Program.cs:line 100
Что такое TextReader здесь идет речь? Я ничего не закрываю, и в коде нет циклов.
вам нужно использовать LINQ? с большим файлом, вы должны использовать filereader для анализа данных, а затем вставить его в конструкцию. –
LINQ используется в основном из-за некоторой группировки и агрегации, которая должна быть выполнена, а также потому, что нет базы данных. – FMFF