Гость
Map
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / удалить элемент массива / 12 сообщений из 12, страница 1 из 1
31.05.2021, 16:58
    #40074449
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить элемент массива
привет, оч прошу помогите с удалением элемента массива
мне нужно удалить элементы которые равны "", я постарался написать
Код: vbnet
1.
2.
3.
4.
5.
For i As Integer = 0 To m_Array.Length - 1
       if m_Array(i) ="" Then
                  System.Array.Clear(m_Array, i, 1)
       end if
     Next


но блин не удается никак, выводит хрень какую-то
вот в эту функцию нужно добавить такой код
Код: vbnet
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.
Public Shared Function RemoveDuplicates(m_Array As Object()) As String()

    System.Array.Sort(m_Array)

    For i As Integer = 0 To m_Array.Length - 1
       if m_Array(i) ="" Then
                  System.Array.Clear(m_Array, i, 1)
       end if
     Next

    Dim k As Integer = 0
    For i As Integer = 0 To m_Array.Length - 1
        If i > 0 AndAlso m_Array(i).Equals(m_Array(i - 1)) Then
            Continue For
        End If
        m_Array(k) = m_Array(i)
        k += 1
    Next

    Dim unique As [String]() = New [String](k - 1) {}

    System.Array.Copy(m_Array, 0, unique, 0, k)

    Return unique

End Function



Модератор: Тема перенесена из форума "Visual Basic".
...
Рейтинг: 0 / 0
31.05.2021, 17:09
    #40074456
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить элемент массива
Sandist
Код: vbnet
1.
System.Array.Clear(m_Array, i, 1)

1) А с чего вы вообще решили, что этот метод удаляет элемент массива?
Код: c#
1.
2.
3.
4.
5.
    //
    // Summary:
    //     Sets a range of elements in an array to the default value of each element type.

    public static void Clear(Array array, int index, int length);



2) А чем не нравятся какие-то простые решения типа .Distinct() из Linq?
...
Рейтинг: 0 / 0
31.05.2021, 17:14
    #40074460
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить элемент массива
Shocker.Pro,
спасибо за ответ, мне бы понравилось, да знаний не хватает. Мне нужно для SSRS из набора данных получить уникальные значения по условию
реализация общая такая:
Код: vbnet
1.
2.
3.
4.
5.
6.
=Join(Code.RemoveDuplicates
	(LookupSet
		(1, 1, IIF(Fields!Транзакция_УслугаВидАнг.Value = "Transfer",Fields!ФинДок_СводнаяНакладнаяНомер.Value,""),"Report"
                )
         ),","
     )


и тут я натолкнулся на необходимость получения distinct значений, нашел в инете пример (тот который вы ставите под сомнение)
из-за условия у меня появляется пустой элемент который я хотел удалить

возможно я вообще что-то делаю неправильно, если так подскажите пожалуйста как правильно
...
Рейтинг: 0 / 0
31.05.2021, 17:25
    #40074463
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить элемент массива
В общем случае
Код: c#
1.
MyNewArray = MyArray.Distinct().ToArray()


а дальше нюансы, связанные со сравнением элементов. Тут не очень понятно, почему на входе массив объектов? Что реально лежит в массиве, какого типа элементы?
...
Рейтинг: 0 / 0
31.05.2021, 17:29
    #40074464
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить элемент массива
Sandist,

поля из query видимо
подскажите пожалуйста как удалить элемент из массива, что мне нужно написать чтобы я удалить все элементы которые равны ""?
...
Рейтинг: 0 / 0
31.05.2021, 17:34
    #40074465
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить элемент массива
Еще раз.
Какая задача стоит?
Удалить элемент из массива (нельзя просто взять и удалить элемент из массива, массив так устроен) или нужно получить массив уникальных значений (для этого не требуется удалять элементы из массива)
...
Рейтинг: 0 / 0
31.05.2021, 17:39
    #40074466
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить элемент массива
Shocker.Pro,

у меня в массиве есть элементы которые имеют значение "A", я хочу удалить все элементы массива которые равны "A"
я правильно понимаю, что у System.Array нет готового решения и я должен перебрать все элементы которые не равно "A" в новый массив и затем уже работать с ним?
...
Рейтинг: 0 / 0
31.05.2021, 17:42
    #40074467
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить элемент массива
Sandist
у меня в массиве есть элементы которые имеют значение "A", я хочу удалить все элементы массива которые равны "A"

Код: c#
1.
MyNewArray = MyArray.Where(n => n != "A").ToArray()


(это синтаксис на C#)
...
Рейтинг: 0 / 0
31.05.2021, 17:44
    #40074468
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить элемент массива
Sandist
System.Array нет готового решения и я должен перебрать все элементы
Для того чтобы работать с данными в .NET есть сотни различных примочек, начиная от обёртки List над массивом и заканчивая мощнейшей библиотекой Linq. Напрямую с массивами в .NET работают достаточно редко, и уж конечно никто не перебирает их вручную.
...
Рейтинг: 0 / 0
31.05.2021, 17:46
    #40074470
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить элемент массива
Shocker.Pro
(это синтаксис на C#)
на VB.NET это будет так
Код: vbnet
1.
MyNewArray = MyArray.Where(Function(n) n <> "A").ToArray()

если верить конвертеру
...
Рейтинг: 0 / 0
31.05.2021, 17:48
    #40074472
Sandist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить элемент массива
Shocker.Pro,
а как сделать на VB?
...
Рейтинг: 0 / 0
31.05.2021, 17:50
    #40074475
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить элемент массива
см. выше.
И еще, если по факту массив состоит из строк, но объявлен как массив объектов, нужно предварительно сделать Cast
Код: vbnet
1.
MyNewArray = MyArray.Cast(Of String)().Where(Function(n) n <> "A").ToArray()
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / удалить элемент массива / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]