Member 11000455 Ответов: 2

Как проверить ключ уже добавленный в hastable и соответствующие им значения


public static DateTime LoggedOn = DateTime.Now;



Hashtable ht = new Hashtable();

hash.Add("Hello", LoggedOn);  // output like "Hello", 18.11.2016 09:52:07 
hash.Add("Hello", LoggedOn);   // output like "Hello", 18.11.2016 09:52:27 
hash.Add("Hello", LoggedOn);    // output like "Hello", 18.11.2016 09:52:55

bool htexists = ht.ContainsKey("Hello");
bool valueexists = ht.ContainsValue(LoggedOn);

if (htexists && valueexists)
{
//if it is first entry allow it 
//my first question it returns always true as i have addaded key and value to my ht but i want to check when it is added more than one time of not if first entry OK

// my second ?  how to check then correspondend value in my case with time  
//if same message say hello is added within few minutes then cancel of say only allowes to add same message during interval of 1 hour or 1 day
}

What I have tried:

First i would like to check if value already exists or not i have done something like this

2 Ответов

Рейтинг:
4

Er. Puneet Goel

Вы также можете создать метод расширения, как показано ниже:

public partial class Page2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Hashtable hashtable = new Hashtable();
        hashtable.AddIfNotExists("Time1", Convert.ToDateTime("11/18/2016 3:43:33 PM"));
        hashtable.AddIfNotExists("Time2", Convert.ToDateTime("11/18/2016 3:43:34 PM"));
        hashtable.AddIfNotExists("Time3", Convert.ToDateTime("11/18/2016 3:43:33 PM"));
        hashtable.AddIfNotExists("Time4", Convert.ToDateTime("11/18/2016 3:43:35 PM"));   
    }
}

public static class Extension
{
    public static void AddIfNotExists(this Hashtable hash, string key1, DateTime value2)
    {
        if (hash.ContainsKey(key1) == false && Convert.ToDateTime((hash[key1])) != value2)
        {            
            hash.Add(key1, value2);
        }
    }
}


Member 11000455

хорошо спасибо я принял но очень простой вопрос

ХТ.добавить("Привет")
// я хочу сделать, что-то делать, если Здравствуйте-это первая в запись в таблице ОК

какие средства
if (ht. containskey ("Hello") но я хочу проверить, нет ли дубликата записи, я знаю, что hastable выдает ошибку для дубликатов значений, но это можно проверить раньше

Er. Puneet Goel

я не знаю, где ты....

смотрите, если(ht.containskey("Hello") скажет, существует ли он или нет
таким образом, он говорит вам, является ли его дубликат или нет. Вы должны поставить это перед добавлением, как я уже упоминал в решении.

Member 11000455

Спасибо своей такой глупой ошибке :-) я сделал

Er. Puneet Goel

пожалуйста, дайте крысу раствору

Member 11000455

конечно

Рейтинг:
0

Er. Puneet Goel

Просто проверьте, существуют ли ключ и значение:

if(hash.ContainsKey("c") && hash["c"] == "3") { }


Member 11000455

в mycase я сделал
если(ХТ.ContainsKey("Привет") &амп;&амп; ГТ["Привет"] == выполнили.Метод toString())
{
// Сделай что-нибудь здесь
}
но это всегда ложь

Er. Puneet Goel

Проверьте решение, которое я добавил ниже, что вам нужно

Member 11000455

если (хэш.ContainsKey("С") и усилитель; & хэш["Ц"] == "3") { } //yoursolution

если(ХТ.(Сообщение) &ContainsKey амп;&амп; ГТ[сообщение] == выполнили.ToString ()) / / то же самое я сделал, но это же не работает

Member 11000455

тоже,

хеш.Добавить("Привет", Выполнили);
боол htexists = ХТ.ContainsKey("Здравствуйте");
bool valueexists = ht. ContainsValue(LoggedOn);

if (htexists & & amp; valueexists)
{
//Он возвращает true, который исправлен, так как я добавил ключ и значение, но я хочу проверить, является ли это первый раз или нет дубликата значения, как это проверить
}

Er. Puneet Goel

если (хеш-таблицы.ContainsKey ("Привет") & amp; & amp; конвертировать.ToDateTime ((hashtable ["Hello"]))! = конвертировать.Объект Todatetime(Выполнили))
{
// Добавить ценность
}

Er. Puneet Goel

Я объяснил это в решении 2. Я не понимаю, в чем тут проблема. Попробуй запустить это.

Member 11000455

спасибо

Member 11000455

наконец-то он работает, но еще один ? в самом начале

ХТ.Добавить("Привет", Выполнили);

перед этой строкой я хочу проверить, является ли она первой записью или нет дубликата значения, как это сделать, потому что моя проблема заключается в том, что когда я использую Containskey, это всегда верно, но я хочу проверить, если это первая запись, то разрешить
если (хеш-таблицы.ContainsKey ("Привет") & amp; & amp; конвертировать.ToDateTime ((hashtable ["Hello"])) = = конвертировать.Объект Todatetime(Выполнили))
{
//сделать ничего
}

Er. Puneet Goel

пожалуйста, примите это как решение для дальнейшей помощи, так как это поможет и другим.