циклы c # занимают много раз - PullRequest
0 голосов
/ 28 мая 2018

Я перебираю данные через цикл foreach.снова внутри я использую цикл foreach внутри для итераций по диспозиторию.

public void checkforreaptedvals()
{
    foreach (DataRow item in dt.Rows)
    {
        foreach (string str in repeatedvals.Keys)
        {
            if (item["Card Data"].ToString() == str)
            {
                item["Repeated Interval"] = repeatedvals[str];
                if (int.Parse(item["Repeated Interval"].ToString()) > 1)
                {
                    item["Status"] = "Duplicated"; ;
                }
            }
        }
    }   
}

, но если количество строк в моей таблице данных превышает 10000, тогда приложению потребуется некоторое время для ответа.здесь dictionay содержит количество повторений одних данных (Dictionary repeatvals = new Dictionary ())

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

1 Ответ

0 голосов
/ 28 мая 2018

Словарь - это коллекция, которая очень быстрая, если поискать по ключу.Вы перечисляете все пары ключ-значение, что очень медленно.

Это очень быстро:

foreach (DataRow row in dt.Rows)
{
    string cardData = row.Field<string>("Card Data");
    bool knownCard = repeatedvals.TryGetValue(cardData, out int repeatCount);
    repeatedvals[cardData] = ++repeatCount;
    row["Repeated Interval"] = repeatCount;
    if (repeatCount > 1)
        row["Status"] = "Duplicated";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...