Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2018, 17:29   #1
RaccoonYalta
Пользователь
 
Регистрация: 27.11.2016
Сообщений: 26
По умолчанию поиск по 2 значениям в txt

Доброе время суток
нуждаюсь в помощи

в txt файле есть такие строки:

3 1 Power Strike
3 2 Power Strike
нужно что бы при воде в texBox1 = 3 а texBox2 = 1 в label1 выводило Power Strike

есть пример по первому значению

Код:
                var id = File.ReadAllLines(@"skillname.dat", Encoding.Default).Select(t => t.Split('\t')).ToDictionary(t => t[0], t => t[2]);
                if (id.ContainsKey(textBox312.Text))
                {
                    label66.Text = id[textBox312.Text];
                }
но он не работает если есть несколько одинаковых значений
RaccoonYalta вне форума Ответить с цитированием
Старый 18.01.2018, 18:35   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Код:
var id = File.ReadAllLines(@"D:\skillname.txt", Encoding.Default)
                .Select(t =>
                    {
                        var items = t.Split('\t');
                        return new
                        {
                            Key1 = int.Parse(items[0]),
                            Key2 = int.Parse(items[1]),
                            Value = items[2]
                        };
                    })
                .GroupBy(t => new { t.Key1, t.Key2 }, (t, group) => new { Key1 = t.Key1, Key2 = t.Key2, Value = group.First().Value});

            var value = id.Where(t => t.Key1 == 3 && t.Key2 == 1).Select(t => t.Value).First(); // Значение для 3 1
            var value2 = id.Where(t => t.Key1 == 3 && t.Key2 == 2).Select(t => t.Value).First(); // Значение для 3 2
pu4koff вне форума Ответить с цитированием
Старый 18.01.2018, 19:57   #3
RaccoonYalta
Пользователь
 
Регистрация: 27.11.2016
Сообщений: 26
По умолчанию

не пойму как назначить что бы эти числа водились через textbox
RaccoonYalta вне форума Ответить с цитированием
Старый 18.01.2018, 20:03   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Код:
var key1 = int.Parse(textBox1.Text);
var key2 = int.Parse(textBox2.Text);
var value = id.Where(t => t.Key1 == key1 && t.Key2 == key2).Select(t => t.Value).First();
label66.Text = value;
pu4koff вне форума Ответить с цитированием
Старый 18.01.2018, 21:52   #5
RaccoonYalta
Пользователь
 
Регистрация: 27.11.2016
Сообщений: 26
По умолчанию

Необработанное исключение типа "System.IO.IOException" в mscorlib.dll

Дополнительные сведения: Устройство не готово.
вожу в textBox1 3 и вылазиет ошибка
RaccoonYalta вне форума Ответить с цитированием
Старый 18.01.2018, 21:57   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

путь к файлу перепроверьте
pu4koff вне форума Ответить с цитированием
Старый 18.01.2018, 22:03   #7
RaccoonYalta
Пользователь
 
Регистрация: 27.11.2016
Сообщений: 26
По умолчанию

изменяюсь не увидел )
теперь такое как только вожу 3 в textbox1
Необработанное исключение типа "System.FormatException" в mscorlib.dll
Дополнительные сведения: Входная строка имела неверный формат.

Код:
private void textBox312_TextChanged(object sender, EventArgs e)
        {
                var id = File.ReadAllLines(@"skillname.dat", Encoding.Default)
                            .Select(t =>
                            {
                                var items = t.Split('\t');
                                return new
                                {
                                    Key1 = int.Parse(items[0]),
                                    Key2 = int.Parse(items[1]),
                                    Value = items[2]
                                };
                            })
                            .GroupBy(t => new { t.Key1, t.Key2 }, (t, group) => new { Key1 = t.Key1, Key2 = t.Key2, Value = group.First().Value });
                var key1 = int.Parse(textBox312.Text);
                var key2 = int.Parse(textBox311.Text);
                var value = id.Where(t => t.Key1 == key1 && t.Key2 == key2).Select(t => 
t.Value).First();
                label66.Text = value;
        }
RaccoonYalta вне форума Ответить с цитированием
Старый 18.01.2018, 22:54   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

вероятно в другом текст боксе пусто и оно не может преобразоваться в число.
Код:
private void textBox312_TextChanged(object sender, EventArgs e)
        {
if (int.TryParse(textBox312.Text, out var key1) && int.TryParse(textBox311.Text, out var key2)) {
                var id = File.ReadAllLines(@"skillname.dat", Encoding.Default)
                            .Select(t =>
                            {
                                var items = t.Split('\t');
                                return new
                                {
                                    Key1 = int.Parse(items[0]),
                                    Key2 = int.Parse(items[1]),
                                    Value = items[2]
                                };
                            })
                            .GroupBy(t => new { t.Key1, t.Key2 }, (t, group) => new { Key1 = t.Key1, Key2 = t.Key2, Value = group.First().Value });
                var value = id.Where(t => t.Key1 == key1 && t.Key2 == key2).Select(t => 
t.Value).First();
                label66.Text = value;
        }}
pu4koff вне форума Ответить с цитированием
Старый 19.01.2018, 04:12   #9
RaccoonYalta
Пользователь
 
Регистрация: 27.11.2016
Сообщений: 26
По умолчанию

не подскажите как сделать исключение ?
RaccoonYalta вне форума Ответить с цитированием
Старый 19.01.2018, 13:14   #10
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

какое исключение?
такое?
Код:
...
else throw new Exception();
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по значениям полей bdfy Microsoft Office Word 10 21.10.2017 19:38
Авто-поиск по двум значениям Freesty1er Microsoft Office Excel 3 08.11.2013 13:56
Параллельный поиск по 2 значениям KuroiRyuu Microsoft Office Excel 4 17.07.2012 19:36
Поиск по двум значениям из двух таблиц Freerider1972 Microsoft Office Excel 11 20.10.2010 18:45
поиск данных по двум значениям robbe Microsoft Office Excel 14 13.01.2010 12:03