[Serializable]
public class LevelsConfigDto
{
[JsonProperty("version")] public int? Version { get; set; }
[JsonProperty("levelParams")] public List<LevelParam>? LevelParams { get; set; }
}
public static void MepLevelsConfig(LevelsConfig target, LevelsConfigDto source)
{
if (source.Version != null)
{
target.Version = source.Version;
}
if (source.LevelParam != null)
{
var count = Math.Min(target.LevelParam.Count, source.LevelParam.Count);
for (int i = 0; i < count; i++)
{
target.LevelParam[i].Steps = source.LevelParam[i].Steps;
target.LevelParam[i].Complexity = source.LevelParam[i].Complexity;
}
if (source.LevelParam.Count > target.LevelParam.Count)
{
for (int i = target.LevelParam.Count; i < source.LevelParam.Count; i++)
{
target.LevelParam.Add(source.LevelParam[i]);
}
}
}
}
UPDATE metrics SET counter = counter + 1
byte[] buffer1 = await webClient.DownloadDataTaskAsync(firstUrl);
byte[] buffer2 = await webClient.DownloadDataTaskAsync(secondUrl);
using (FileStream stream = new FileStream("file.data", FileMode.Create))
{
stream.Write(buffer1, 0, buffer1.Length);
stream.Write(buffer2, 0, buffer2.Length);
}
string[] urls = { /* URL адреса файлов */ };
string[] filesNames = { /* имена файлов */ };
// параллельно скачиваем файлы
await Task.WhenAll(urls.Select((url, i) => webClient.DownloadFileTaskAsync(url, filesNames[i])));
// открываем на запись первый файл
using (Stream resultFileStream = File.OpenWrite(filesNames[0]))
{
// открываем на чтение второй файл
using (Stream fileStream = File.OpenRead(filesNames[1]))
{
// копируем поток байтов из второго файла в первый
fileStream.CopyTo(resultFileStream);
}
}
// удаляем второй файл
File.Delete(filesNames[1]);
php about.php
и перехватывать стандартный вывод. У вас не будет доступа к информации запроса, но вы можете через аргументы передать нужную вам информацию php about.php firstname lastname
SELECT p.*, SUM(sb.count)
FROM Product AS p
JOIN StockBalance AS sb ON sb.product_id = p.id
GROUP BY p.id;