Форум программистов, компьютерный форум, киберфорум
LINQ
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.10.2014
Сообщений: 22
1

Определение дублей по первым 6 символам

11.07.2015, 16:09. Показов 1052. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Господа, подскажите...

Надо перебором сравнивать номера из таблицы BlackListPhones и таблицы ClientPhones. Если сравнение находится, то выполняем необх. действия с таблицей, связанной с ClientPhones.



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
public int RemoveDemandsByBlackList()
        {
            int count = 0;
            try
            {
                var reason = m_dl.ReleaseReasons.FirstOrDefault(x => x.Name.ToLower() == "это агент");
                var demands = m_dl.Demands
                    .Where(x => x.FirmID == null
                        && !x.IsClosed
                        && x.Client.ClientPhones
                            .Any(cp => m_dl.BlackListPhones
                                .Any(p => p.Phone == cp.Number && !p.IsDeleted)))
                    .Select(x => x.ID)
                    .ToArray();
 
                foreach (var d in demands)
                {
                    if (DeleteDemand(d, reason.ID))
                        count++;
                }
            }
            catch
            {
            }
 
            return count;
        }
Все ок отрабатывается.




Но понадобилось добавить новое условие сравнения. Если в таблице BlackListPhones есть номера из 6 знаков, то нужно производить сравнение с таблицей ClientPhones только по первым 6 знакам... вот тут затык. Ничего не находит:

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
public int RemoveDemandsByBlackList()
        {
            int count = 0;
            try
            {
                var reason = m_dl.ReleaseReasons.FirstOrDefault(x => x.Name.ToLower() == "это агент");
                var demands = m_dl.Demands
                    .Where(x => x.FirmID == null
                        && !x.IsClosed
                        && x.Client.ClientPhones
                            .Any(cp => m_dl.BlackListPhones
                                .Any(p => ((p.Phone.Length == 6) ? (p.Phone == cp.Number.Substring(0, cp.Number.Length - 4)) : (p.Phone == cp.Number)) && !p.IsDeleted)))
                    .Select(x => x.ID)
                    .ToArray();
 
                foreach (var d in demands)
                {
                    if (DeleteDemand(d, reason.ID))
                        count++;
                }
            }
            catch
            {
            }
 
            return count;
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.07.2015, 16:09
Ответы с готовыми решениями:

Фильтр по первым 3 символам
Загружаю в листбокс список индексов. Нужно пройтись по всему списку и переместить все индексы в...

Поиск в файле по первым символам
Есть такой текстовый файл с данными. 019Dima 412Olis 618Simon 414Sipter 311Unimiles...

Поиск в combobox по первым символам
как в combobox сделать поиск по первым символам?

Поиск слова по первым символам
Господа программисты, есть значит массив слов, каждое слово имеет n знаков и начинается с разной...

4
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
11.07.2015, 17:24 2
Цитата Сообщение от rs-online Посмотреть сообщение
нужно производить сравнение с таблицей ClientPhones только по первым 6 знакам...
В коде до конца не разобрался, не совсем интуитивно он понятен, но есть предложение: сделать отдельную проверку на номера из 6 цифр, если найден - то создать коллекцию, где все номера обрезаны по 6 цифр.
Будет выглядеть не так изящно, зато более понятно и может даже заработает.
0
2151 / 1288 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
11.07.2015, 17:51 3
Цитата Сообщение от tezaurismosis Посмотреть сообщение
Будет выглядеть не так изящно, зато более понятно и может даже заработает.
это как раз и будет изящно )
0
0 / 0 / 0
Регистрация: 01.10.2014
Сообщений: 22
12.07.2015, 00:28  [ТС] 4
Спасибо! Все получилось... нашел ошибку + действительно, проще было искать отдельно по шести знакам и по целым

Не по теме:

p.s. только вопрос почему в Linq тему перекинули из c#

0
tezaurismosis
12.07.2015, 10:57     Определение дублей по первым 6 символам
  #5

Не по теме:

rs-online, код и вопрос напрямую связаны с LINQ. Вывод отсюда очевиден.
На будущее: если у вас вопрос по административной части, пишите в личку. Публично эти вопросы не обсуждаются.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2015, 10:57

Сортировка списка слов по первым символам
Всем привет. Давно читаю форум, очень много полезного здесь нахожу, но появилась задача, которую...

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

Удаление строк по повторяющимся первым символам
У меня есть текстовый файл, который содержит множество списков преобразованных в строки (каждая...

Сравнение значений ячеек по первым символам
Добрый день, форумчане! Повторно обращаюсь за помощью, очень надо. Задача: в столбце "А"...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru