Для простого документа phpseclib, чистой реализации PHP SFTP.
См. следующую ссылку:
Загрузка файлов через SFTP с использованием PHP
Структура папок:
Main Folder->
my-files(Contain File Which Transfer To Remote Server)
phpseclib0.3.0
sftp.php
Это немного запутанно, да.
Все, что нам нужно сделать, это выбрать SiteCode
в виде строки, отсортировать по OrderBy
, а затем объединить результаты. Поскольку у String::Join
есть вариант, который работает с IEnumerable<string>
, нам не нужно преобразовывать массив в середину.
В результате мы получаем единственное утверждение для присвоения вашему члену SiteDetails
:
result.SiteDetails = string.Join(", ",
result.Sites
.Select(x => $"{ICMSRepository.Instance.GetSiteInformationById(x.SiteInformationId).SiteCode}")
.OrderBy(x => x)
);
(или вы можете использовать .ToString()
вместо $"{...}"
)
Это общий процесс для большинства преобразований в LINQ. Выясните, каковы ваши входные данные, что вам нужно с ними делать и как должны выглядеть выходные данные.
Если вы используете LINQ, нечасто, что вам придется создавать и управлять списками посредников, если вы не делаете что-то довольно сложное. Для простых задач, таких как сортировка последовательности значений, почти никогда нет причин помещать их в переходные коллекции, поскольку инфраструктура обрабатывает все это за вас.
И самое приятное, что он один раз перечисляет коллекцию, чтобы получить полный набор данных. Больше нет циклов, чтобы извлечь данные, затем обработать, а затем перестроить.
Одна вещь, которая улучшит производительность, это избавиться от .ToList()
и .ToString
. В этом нет необходимости, просто нужно потратить дополнительное время на обработку и память.
Я бы использовал SortedList , но я не думаю, что это сильно повлияет на производительность, просто, вероятно, будет легче читать.
Придерживайтесь ответа Кори, который является вариантом, но я подумал, что предложу немного более четкий способ выразить запрос:
result.SiteDetails =
String.Join(", ",
from x in result.Sites
let sc = ICMSRepository.Instance.GetSiteInformationById(x.SiteInformationId).SiteCode
orderby sc
select sc);