Ежедневник IT-ка
133 subscribers
22 photos
4 videos
1 file
43 links
Программируем на практике!!
По вопросам по поводу проектов: @vladimir_dzen
Download Telegram
​​Затрону тему с LINQ запросами и не только:

   static void Main(string[] args)
    {
      Console.ForegroundColor = ConsoleColor.Red;
      Console.WriteLine("LINQ");
      // Создание списка с произвольными числами.
      List<int> numbers = new List<int> { 1, 5, 10, 12, -1, -300, 500 };
      Console.WriteLine($"Min число: {numbers.Min()}");
      Console.WriteLine($"Max число: {numbers.Max()}");
      Console.WriteLine($"Кол-во чисел в списке: {numbers.Count()}");
      Console.WriteLine($"Кол-во чисел в списке больше 0: {numbers.Count(x => x > 0)}");
      Console.WriteLine($"Сумма отрицательных чисел:{numbers.Where(x => x < 0).Sum()}");

      Console.ReadLine();

      Console.ForegroundColor = ConsoleColor.Yellow;
      // Генерация чётных чисел.
      Console.WriteLine("Генерация чётных чисел");
      var result = Enumerable.Range(-4, 10).Where(x => x % 2 == 0);

      foreach (var item in result)
      {
        Console.Write(item + "\t");
      }

      Console.ForegroundColor = ConsoleColor.Green;
      // Повторение объекта.
      Console.WriteLine(" ");
      Console.WriteLine(" ");
      Console.WriteLine("Повторение объектов");
      var repeat = Enumerable.Repeat("Привет мир!", 5);

      foreach (var item in repeat)
      {
        Console.WriteLine(item);
      }
      Console.ReadLine();
    }
  }

#LINQ , #CSharp
Хочу сегодня добавить несколько сниппетов по LINQ запросам:

1. Поиск текста по регулярке, множество совпадений в список:

Regex regexJson = new Regex(@"[a-zA-Z0-9]{20,}.*?}");

List<string> tmpList = regexJson.Matches(result).Cast<Match>().Select(m => m.Value).ToList();

List<string> resultsList = tmpList.Where(s => s.Contains("index") && s.Contains("id") && s.Contains("brandId") && !s.Contains("Отзывы") && !s.Contains("advert")).ToList();

2. Создать список ID(индексы строк), в которых содержатся необходимый ключ(особенность: создание анонимного типа с свойствами(Index и Value)):

tmpList.Select((v, i) => new { Index = i, Value = v })
            .Where(p => p.Value.Contains("brandId")).Select(p => p.Index.ToString()).ToList();

3. Получение суммы из списка, которые имеет тип данных string(List<string>) т.е. необходимо значения string сконвертировать в int:

var sumTempResList = tmpResList.Where(d => !string.IsNullOrEmpty(d.Trim())).Select(s => int.Parse(s.Replace("-",""))).ToList().Sum();

4. Создание Dictionary<string,string> из двух разных Списков(List<string>):

List<string> keysList = new List<string>{"2569746", "9876415", "6957459"};

List<string> valuesList = new List<string>{"val1", "val2", "val3"};

Dictionary<string,string> resDict = keysList.Zip(valuesList, (k, v) => new { k, v }).ToDictionary(x => x.k, x => x.v);

5. Создание списка из двух списков, в которых значения не совпадают(т.е. в одном списке, есть в другом нет и те значения, которых нет в другом списке добавляем в новый третий список):

List<string> artsG = new List<string>{"2569746", "9876415", "6957459", "5947945", "9874647"};

List<string> skues = new List<string>{"2569746", "9876415", "6957459"};

List<string> compR_GBD = artsG.Where(n => !skues.Any(s => s.ToLower() == n.ToLower())).ToList();

Получается новый список "compR_GBD" состоящий из этих двух значений("5947945", "9874647")

#LINQ , #CSharp