Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 2
Регистрация: 07.02.2016
Сообщений: 49
1

Поиск значения по столбцу таблицы

14.08.2016, 14:20. Показов 1932. Ответов 17
Метки нет (Все метки)

Здравствуйте!
В моей программе организован поиск строки в файле, хотелось бы улучшить поиск и сделать возможность поиска по заданному столбцу. Как лучше реализовать данную функцию?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Program
    {
        //Дерректива переменной
        static string path = @"F:\test21.csv";
        //Задаем переменную "х" строкового типа
        static string x = "";
 
        static void Main(string[] args)
        {
            try
            {
                //Заносим значение csv-файла в массив
                string[] sr = new StreamReader(Search.path).ReadToEnd().Split(new string[] { ";", """, ":", "\r" }, StringSplitOptions.None);
                Console.Write("Введите значение: ");
                x = Console.ReadLine();
                foreach (string stroka in sr)
                {
 
                    if (stroka == x)
                    {
                        Console.WriteLine("Результат поиска: {0}",stroka);
                        break;
                    }
                    
                }
                    
            }
            
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine("Press Key to Exit...");
            Console.ReadKey();
        }
    }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.08.2016, 14:20
Ответы с готовыми решениями:

Поиск значения по столбцу
Всем привет, есть некая таблица в которой отображаются принтеры и их ip, сейчас эти ip в разноброс,...

Поиск значения на листе по строке и столбцу
Доброго времени суток! В VBA новичок, поэтому прошу не пинать, если увидите какую-то глупость, а...

Сортировка по правому столбцу. Поиск в правом столбце значения из левой
Здравствуйте!!!! Кому не сложно и есть время на такую кашу ((( Искал в инете макрос не нашел....

Поиск мин. и макс. значения по третьему столбцу в тхт файле
Здравствуйте. Прошу помощи у знающих. Есть код, представленный ниже, в нем поиск мин. и макс....

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
17
589 / 474 / 184
Регистрация: 19.04.2016
Сообщений: 1,872
14.08.2016, 14:46 2
Tibomso, через ReadLine читать до нужной строки, потом ее сплитить и доставать столбец.
Как достать значение из коллекции?
0
1 / 1 / 2
Регистрация: 07.02.2016
Сообщений: 49
14.08.2016, 19:16  [ТС] 3
EveKS, как достать столбец?
0
589 / 474 / 184
Регистрация: 19.04.2016
Сообщений: 1,872
14.08.2016, 19:37 4
Tibomso, строку распарсить и достать значение.. если все значения, то смотря как хранятся данные в csv.
Но суть, как достать столбец:
1) принял строку,
2) распарсил,
3) достал(пусть нужен 2 столбец) значения второго столбца,
4) добавил в список(вывел/добавил в результат некий).
5) - переход к 1)

Добавлено через 25 секунд
ReadLines
0
1 / 1 / 2
Регистрация: 07.02.2016
Сообщений: 49
14.08.2016, 19:54  [ТС] 5
EveKS, а с помощью дополнительного if-a я не могу просто реализовать данную функцию?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Console.Write("Введите значение колонки: ");
                x = Console.ReadLine();
                
                foreach (string col in sr)
                {
 
                    if (col == x)
                    {
                        //Console.WriteLine("Результат поиска: {0}",stroka);
                        //break;
                        Console.Write("Введите значение поиска: ");
                        y = Console.ReadLine();
                        foreach (string stroka in sr)
                        {
                                          
                            if (stroka == y)
                            {
                                Console.WriteLine("Результат поиска: {0}", stroka);
                                break;
                            }
                            
                        }                        
                    }
                    
                }
0
589 / 474 / 184
Регистрация: 19.04.2016
Сообщений: 1,872
14.08.2016, 20:51 6
Tibomso, new StreamReader(Search.path).ReadLines()
Ну и почитать об этом.
0
1 / 1 / 2
Регистрация: 07.02.2016
Сообщений: 49
14.08.2016, 20:55  [ТС] 7
EveKS, можешь на пальцах объяснить?
Я уже читал про данный метод вот здесь.
Просто не могу понять, как мне его применить....
0
589 / 474 / 184
Регистрация: 19.04.2016
Сообщений: 1,872
14.08.2016, 21:35 8
Tibomso,
Вся колонка:
C#
1
2
3
4
5
6
7
8
9
10
11
12
            string path = @"path";
            int column = 1;
 
            var result = new List<string>();
            using (var reader = new StreamReader(path,
                Encoding.GetEncoding(1251)))
            {
                while (!reader.EndOfStream)
                {
                    result.Add(reader.ReadLine().Split(';')[column]);
                }
            }
Вся строка:
C#
1
2
int row = 10;
File.ReadLines(path).Skip(row).First();
0
1 / 1 / 2
Регистрация: 07.02.2016
Сообщений: 49
14.08.2016, 21:47  [ТС] 9
EveKS, зачем "GetEncoding(1251)"? Вся строка может быть больше или меньше 10 элементов...

Добавлено через 4 минуты
EveKS, по заданному столбцу или строке легко вычислить значение, а вот если поиск задает пользователь через консоль, это совсем другая история...
0
589 / 474 / 184
Регистрация: 19.04.2016
Сообщений: 1,872
14.08.2016, 21:48 10
Tibomso,
C#
1
2
3
4
5
6
7
             using (var reader = new StreamReader(path))
            {
                while (!reader.EndOfStream)
                {
                    result.Add(reader.ReadLine().Split(';')[column]);
                }
            }
GetEncoding
Encoding
0
1 / 1 / 2
Регистрация: 07.02.2016
Сообщений: 49
14.08.2016, 21:49  [ТС] 11
EveKS, у меня нет проблем с кодировкой)
0
589 / 474 / 184
Регистрация: 19.04.2016
Сообщений: 1,872
14.08.2016, 21:51 12
C#
1
2
int column = //пусть сюда введет пользователь свое значение;
int row = //и сюда;
Тут были все ответы, конкретно тут.

Добавлено через 38 секунд
Цитата Сообщение от Tibomso Посмотреть сообщение
у меня нет проблем с кодировкой)
это просто пример...
0
1 / 1 / 2
Регистрация: 07.02.2016
Сообщений: 49
14.08.2016, 21:56  [ТС] 13
EveKS, значения типа string

Добавлено через 3 минуты
EveKS, Вы меня видимо не поняли...
Вот у меня есть более универсальный и более простой код
C#
1
2
3
4
5
6
7
8
9
10
11
static void Main(string[] args)
    {
        const string path = "input.txt";
        string text = GetValueFromFile(path, 3, 1);
        Console.WriteLine(text);
    }
 
    private static string GetValueFromFile(string path, int row, int column)
    {
        return File.ReadLines(path).Skip(row).First().Split(';')[column];
    }
Как мне значение column преобразовать в string?
0
589 / 474 / 184
Регистрация: 19.04.2016
Сообщений: 1,872
14.08.2016, 22:03 14
Tibomso,
C#
1
2
3
4
5
6
int var1 = Convert.ToInt32(Console.ReadLine());
 
int var2 = int.Parse(Console.ReadLine());
 
int var3;
int.TryParse(Console.ReadLine(), out var3);
И вообще какова задача и пример нескольких строк csv...

Добавлено через 1 минуту
=)) Не охото разжевывать этот код, ибо не вижу смысла, может тот кто его составил ответит...
0
1 / 1 / 2
Регистрация: 07.02.2016
Сообщений: 49
14.08.2016, 22:08  [ТС] 15
EveKS, пользователь с начала задает, допустим, "ФИО" и поиск осуществляется конкретно по этой колонке.
Пример .csv:
ФИО;Дата рождения;Количество проектов;Рейтинг;Комментарий
Мельникова Татьяна Сергеевна;12.01.1990;9;3,5;Инженер
Бурн;22.11.1973;102;9,2;Водитель

Добавлено через 55 секунд
EveKS, это из вашего примера)
0
589 / 474 / 184
Регистрация: 19.04.2016
Сообщений: 1,872
14.08.2016, 22:21 16
Лучший ответ Сообщение было отмечено Tibomso как решение

Решение

Tibomso, но он не мой)), и что в нем не так? причем тут стринг... Зачем вообще column преобразовывать в стринг если это:
C#
1
File.ReadLines(path).Skip(row).First().Split(';')
массив...
я дал ответы на:
как извлечь строку,
колонку,
и показал пример как извлечь конкретное значение...
Цитата Сообщение от Tibomso Посмотреть сообщение
"ФИО" и поиск осуществляется конкретно по этой колонке.
Извлекаем первую строку и ищем в ней индекс ФИО и затем извлекаем всю колонку, если она вообще нужна вся...

Может будет решением, то тут я извлеку строку по поиску:
C#
1
2
3
4
5
6
7
8
9
10
11
12
            string find = "Мельникова Татьяна Сергеевна";
            string res = "";
            using (var reader = new StreamReader(path))
            {
                while (!reader.EndOfStream)
                {
                    res = reader.ReadLine();
                    if (res.Contains(find))
                        break;
                }
            }
            Console.WriteLine(res);
1
1 / 1 / 2
Регистрация: 07.02.2016
Сообщений: 49
14.08.2016, 22:29  [ТС] 17
Цитата Сообщение от EveKS Посмотреть сообщение
while (!reader.EndOfStream)
, можете подробно рассказать про данный цикл? А так почти, то что нужно. Почему почти, потому что выдает значение строки целиком, но это поправимо)
0
589 / 474 / 184
Регистрация: 19.04.2016
Сообщений: 1,872
14.08.2016, 22:34 18
Tibomso, это на тот случай если не чего не найдет.
Свойство StreamReader.EndOfStream
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.08.2016, 22:34

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Из таблицы ADOTable на одной форме произвести поиск по столбцу и найденное скопировать в ADOTAble другой
Добрый день уважаемые знатоки, сегодня с вами играет студент из Крыма. Внимание вопрос: Необходимо...

Поиск и сравнения значения в ячейке таблицы
Добрый день! Значения приходят в таблицу main колонка Manf_str, значения приходят с накладных и...

Поиск ближайшего подходящего значения из таблицы
Здравствуйте, в Excel у меня есть таблица из разных значений P, которым соответствуют разные...

Поиск функции, значения которой заданы в виде таблицы
Есть неизвестная функция F(x), которая отображает целое число x в вектор вида размера N. Имеется...

Поиск минимального значения в 1 таблице и сравнение с минимальным значением 2 таблицы
Всем привет! Не могу решить казалось бы простую задачу. На одном листе есть 2 таблицы, в них по 2...

Поиск минимального значения в 1 таблице и сравнение с минимальным значением 2 таблицы
Всем привет! Не могу решить казалось бы простую задачу.* На одном листе есть 2 таблицы, в них по 2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.