Как добавить обновление Удалить дубликат списка пар значений ключей - PullRequest
0 голосов
/ 04 мая 2020

Мне нужен общий метод c, чтобы добавить обновление Удалить из списка пар значений дубликатов ключей

Моя пара значений дубликатов ключей выглядит следующим образом

        List<KeyValuePair<string, int>> dupesStudentIdsList = new List<KeyValuePair<string, int>>();
        dupesStudentIdsList.Add(new KeyValuePair<string, int>("1234_456X", 1));
        dupesStudentIdsList.Add(new KeyValuePair<string, int>("1234_456X", 2));
        dupesStudentIdsList.Add(new KeyValuePair<string, int>("1234_456X", 3));
        dupesStudentIdsList.Add(new KeyValuePair<string, int>("1234_456X", 4));
        dupesStudentIdsList.Add(new KeyValuePair<string, int>("1234_456X", 5));
        //new set of duplicate ids with increasing rowNumber 
        dupesStudentIdsList.Add(new KeyValuePair<string, int>("9999_999A", 1));
        dupesStudentIdsList.Add(new KeyValuePair<string, int>("9999_999A", 2));
        dupesStudentIdsList.Add(new KeyValuePair<string, int>("9999_999A", 4));
        dupesStudentIdsList.Add(new KeyValuePair<string, int>("9999_999A", 5));
        dupesStudentIdsList.Add(new KeyValuePair<string, int>("9999_999A", 6));

Что мне нужно сейчас, когда я передаю ключ, он должен удалить все строки для этого ключа.

 private void RemoveDupesbyKey(string DupeKey) //passing "1234_456X"
 {
 }   

// Ожидаемый результат при передаче ключа как «1234_456X»

("9999_999A", 1));
("9999_999A", 2));
("9999_999A", 4));
("9999_999A", 5));
("9999_999A", 6));

Теперь я хочу удалить только одну запись, передавая и ключ, и значение («9999_999A», 6 )

private void RemoveByPassingKeyandValue(string key , int Value) // this is passed
{
}

// Ожидаемый результат

("9999_999A", 1));
("9999_999A", 2));
("9999_999A", 4));
("9999_999A", 5));  // last row is removed. 

// Обновлять только значение Передавая ключ и значение

  private void updateValueOnly(string key , int Value) // Only Value update for the Key
    {
    }

// Ожидаемый результат

("9999_999A", 1));
("9999_999A", 2));
("9999_999A", 4));
("9999_999A", 999999));  //only value is updated for that key and value 

1 Ответ

0 голосов
/ 04 мая 2020

Это то, что мне удалось. Если есть лучший подход, я был бы благодарен.

   private void RemoveDupesbyKey(string DupeKey) //passing "1234_456X"
{
    dupesStudentIdsList.RemoveAll(x => x.Key.Equals(Dupekey));
}

private void RemoveByPassingKeyandValue(string key, int Value) // this is passed
{
    dupesStudentIdsList.Remove(new KeyValuePair<string, int>(key, Value));
}

Так как KeyValuePair является неизменным. Мы должны удалить это и добавить это.

private void UpdateValueOnly(string key, int Value) // this is passed
{

  if (dupesStudentIdList.Where(x => x.Key.Equals(key) && x.Value.Equals(Value).Any()))//check if it matches 
    {
        //remove
        dupesStudentIdsList.Remove(new KeyValuePair<string, int>(key, Value));
        // add 
        dupesStudentIdsList.Add(new KeyValuePair<string, int>(key, Value));
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...