Получить значения, соответствующие номерам - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть список чисел, где у каждого есть два соответствующих числа, как это:

1: 30 and 60
2: 70 and 100
3: 120 and 150

Я хотел бы получить оба числа, соответствующие данному числу. Например, если я найду 2, я получу 70 и 100.

Какой тип данных лучше всего хранить и извлекать эту информацию?

Ответы [ 2 ]

3 голосов
/ 30 апреля 2020

Это хороший пример Инкапсуляция Столб OOP:

Инкапсуляция означает, что группа связанных свойств, методов и других элементов рассматривается как единое целое или объект.

Вы можете создать класс с тремя свойствами Id, Number1 и Number2 соответственно. Таким образом, вам будет легче поддерживать связь между всеми тремя числами

public class Numbers
{
   public int Id { get; set; }
   public int Number1 { get; set; }
   public int Number2 { get; set; }

   public Numbers(int id, int num1, int num2)
   { 
       this.Id = id;
       this.Number1 = num1;
       this.Number2 = num2;
   }
}

У вас есть список чисел, например,

 List<Numbers> NumberList = new List<Numbers>()
 { 
      new Numbers(1, 30, 60),
      new Numbers(2, 70, 100),
      new Numbers(3, 120, 150)
 }

Теперь, если вы хотите отфильтровать его по паре по идентификатору, затем

 using System.Linq; 
 ...
 var result = NumberList.FirstOrDefault(x => x.Id == 3);
 Console.WriteLine($"{result.Id}: {result.Number1} and {result.Number2}");

Вывод:

3: 120 and 150.

Какой тип данных лучше всего хранить / извлекать эту информацию?

Кому хранить числовые данные c, C# предоставлять short, int, long, float, double типы данных. Вы можете выбрать любой тип данных согласно вашему требованию.

2 голосов
/ 30 апреля 2020

Вы можете использовать словарь с кортежами

var dic = new Dictionary<int, Tuple<int, int>>();
dic.Add(1, Tuple.Create(30, 60));
dic.Add(2, Tuple.Create(70, 100));
dic.Add(3, Tuple.Create(120, 150));

Тогда, если, например, вы хотите получить оба числа, соответствующие, например, 3

dic.TryGetValue(3, out Tuple<int, int> res);
var firstNumber= res.Item1; //this should be 120
var secondNumber = res.Item2; //this should be 150
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...