powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Получить массив из строк с разделителями
14 сообщений из 14, страница 1 из 1
Получить массив из строк с разделителями
    #39101272
Zaharius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица, в которой содержится столбец Names, в котором через запятую перечислено несколько (в каждой строке по разному) имен.

Table1
id Fam Names
1 Новиковы Вася,Инга,Коля,Саша,Женя
2 Майоровы Миша,Лена
3 Андреевы Андрей,Маша,Зина
4 Ивановы Ильдар,Таня,Рита,Вера


Необходимо одним LINQ-запросом без использования циклов вывести все имена в один массив.

Вася
Инга
Коля
Саша
Женя
Миша
Лена
Андрей
Маша
Зина
Ильдар
Таня
Рита
Вера

Не придумалось ничего умнее, чем это:

Dim q = Split(Join((From dt In dTable Select dt.Field(Of String)("Names")).ToArray, ","), ",")

Может быть есть более простое решение?
...
Рейтинг: 0 / 0
Получить массив из строк с разделителями
    #39101287
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть
Код: c#
1.
.SelectMany(n => n.Split(','));

(это на шарпе)
...
Рейтинг: 0 / 0
Получить массив из строк с разделителями
    #39101347
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zahariusодним LINQ-запросом без использования циклов

))))))))))
...
Рейтинг: 0 / 0
Получить массив из строк с разделителями
    #39101380
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueZahariusодним LINQ-запросом без использования циклов

))))))))))не, ну а что, пользователь же не использует циклы. То, что они есть внутри линка, так они могут быть и глубже, на уровне машинного кода, конвеера в процессоре и т.п, это ж необязательно знать и учитывать
...
Рейтинг: 0 / 0
Получить массив из строк с разделителями
    #39101387
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProMonochromatiqueпропущено...


))))))))))не, ну а что, пользователь же не использует циклы. То, что они есть внутри линка, так они могут быть и глубже, на уровне машинного кода, конвеера в процессоре и т.п, это ж необязательно знать и учитыватьА могут и не быть: loop unrolling .

В Linq всё построено на энумераторе, сомневаюсь, что компилятор применяет к нему какие-то оптимизации.
Хотя тут они и не нужны, всего 14 имён. А с другой стороны всего 14 имён, почему бы не размотать :)
...
Рейтинг: 0 / 0
Получить массив из строк с разделителями
    #39101606
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA А с другой стороны всего 14 имён, почему бы не размотать :)
Для этого нужно знать количество заранее, что редко возможно.
...
Рейтинг: 0 / 0
Получить массив из строк с разделителями
    #39101761
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА могут и не быть: loop unrolling .

В Linq всё построено на энумераторе, сомневаюсь, что компилятор применяет к нему какие-то оптимизации.
Хотя тут они и не нужны, всего 14 имён. А с другой стороны всего 14 имён, почему бы не размотать :)

Ну и бред
...
Рейтинг: 0 / 0
Получить массив из строк с разделителями
    #39101813
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНу и бред
Зачем так говоришь дарагой а? Совсем авторитет skyANA не уважаешь?
Вот что вызывается в итоге например при string.copy, не спроста же...
Просто компилятору до таких оптимизаций еще далеко.

Код: 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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
// System.Buffer
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success), SecurityCritical]
internal unsafe static void Memmove(byte* dest, byte* src, uint len)
{
	if (dest - src >= len)
	{
		switch (len)
		{
		case 0u:
			return;
		case 1u:
			*dest = *src;
			return;
		case 2u:
			*(short*)dest = *(short*)src;
			return;
		case 3u:
			*(short*)dest = *(short*)src;
			dest[2] = src[2];
			return;
		case 4u:
			*(int*)dest = *(int*)src;
			return;
		case 5u:
			*(int*)dest = *(int*)src;
			dest[4] = src[4];
			return;
		case 6u:
			*(int*)dest = *(int*)src;
			*(short*)(dest + 4) = *(short*)(src + 4);
			return;
		case 7u:
			*(int*)dest = *(int*)src;
			*(short*)(dest + 4) = *(short*)(src + 4);
			dest[6] = src[6];
			return;
		case 8u:
			*(int*)dest = *(int*)src;
			*(int*)(dest + 4) = *(int*)(src + 4);
			return;
		case 9u:
			*(int*)dest = *(int*)src;
			*(int*)(dest + 4) = *(int*)(src + 4);
			dest[8] = src[8];
			return;
		case 10u:
			*(int*)dest = *(int*)src;
			*(int*)(dest + 4) = *(int*)(src + 4);
			*(short*)(dest + 8) = *(short*)(src + 8);
			return;
		case 11u:
			*(int*)dest = *(int*)src;
			*(int*)(dest + 4) = *(int*)(src + 4);
			*(short*)(dest + 8) = *(short*)(src + 8);
			dest[10] = src[10];
			return;
		case 12u:
			*(int*)dest = *(int*)src;
			*(int*)(dest + 4) = *(int*)(src + 4);
			*(int*)(dest + 8) = *(int*)(src + 8);
			return;
		case 13u:
			*(int*)dest = *(int*)src;
			*(int*)(dest + 4) = *(int*)(src + 4);
			*(int*)(dest + 8) = *(int*)(src + 8);
			dest[12] = src[12];
			return;
		case 14u:
			*(int*)dest = *(int*)src;
			*(int*)(dest + 4) = *(int*)(src + 4);
			*(int*)(dest + 8) = *(int*)(src + 8);
			*(short*)(dest + 12) = *(short*)(src + 12);
			return;
		case 15u:
			*(int*)dest = *(int*)src;
			*(int*)(dest + 4) = *(int*)(src + 4);
			*(int*)(dest + 8) = *(int*)(src + 8);
			*(short*)(dest + 12) = *(short*)(src + 12);
			dest[14] = src[14];
			return;
		case 16u:
			*(int*)dest = *(int*)src;
			*(int*)(dest + 4) = *(int*)(src + 4);
			*(int*)(dest + 8) = *(int*)(src + 8);
			*(int*)(dest + 12) = *(int*)(src + 12);
			return;
		default:
			if (len < 512u)
			{
				if ((dest & 3) != 0)
				{
					if ((dest & 1) != 0)
					{
						*dest = *src;
						src++;
						dest++;
						len -= 1u;
						if ((dest & 2) == 0)
						{
							goto IL_1DA;
						}
					}
					*(short*)dest = *(short*)src;
					src += 2;
					dest += 2;
					len -= 2u;
				}
				IL_1DA:
				for (uint num = len / 16u; num > 0u; num -= 1u)
				{
					*(int*)dest = *(int*)src;
					*(int*)(dest + 4) = *(int*)(src + 4);
					*(int*)(dest + (IntPtr)2 * 4) = *(int*)(src + (IntPtr)2 * 4);
					*(int*)(dest + (IntPtr)3 * 4) = *(int*)(src + (IntPtr)3 * 4);
					dest += 16;
					src += 16;
				}
				if ((len & 8u) != 0u)
				{
					*(int*)dest = *(int*)src;
					*(int*)(dest + 4) = *(int*)(src + 4);
					dest += 8;
					src += 8;
				}
				if ((len & 4u) != 0u)
				{
					*(int*)dest = *(int*)src;
					dest += 4;
					src += 4;
				}
				if ((len & 2u) != 0u)
				{
					*(short*)dest = *(short*)src;
					dest += 2;
					src += 2;
				}
				if ((len & 1u) != 0u)
				{
					*dest = *src;
				}
				return;
			}
			break;
		}
	}
	Buffer._Memmove(dest, src, len);
}
...
Рейтинг: 0 / 0
Получить массив из строк с разделителями
    #39101814
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAА могут и не быть: loop unrolling .

В Linq всё построено на энумераторе, сомневаюсь, что компилятор применяет к нему какие-то оптимизации.
Хотя тут они и не нужны, всего 14 имён. А с другой стороны всего 14 имён, почему бы не размотать :)

Ну и бред Ты сегодня прям сыпешь конструктивным аргументами :)
...
Рейтинг: 0 / 0
Получить массив из строк с разделителями
    #39101997
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttпропущено...


Ну и бред Ты сегодня прям сыпешь конструктивным аргументами :)

Ну реально бредятина. Я не понимаю к чему ты упомянул loop unrolling в контексте LINQ, какие оптимизации? Да ещё и не правду ты сказал, что в LINQ всё типа построено на энемераторе. Не правда это. Не вводи людей в заблуждение.
...
Рейтинг: 0 / 0
Получить массив из строк с разделителями
    #39102001
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВ Linq всё построено на энумераторе
Тогда уж на IQueryable. От одного IEnumerable толку мало.
...
Рейтинг: 0 / 0
Получить массив из строк с разделителями
    #39102091
Фотография zasandator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zaharius,

Сделай склейку запросом скл чо...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
declare @t table (vchr varchar(100))
insert @t values
('aaa'),
('b'),
('cc')

select * from @t
select vchr+',' as 'data()' from @t order by vchr desc for xml path('')
...
Рейтинг: 0 / 0
Получить массив из строк с разделителями
    #39102450
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAпропущено...
Ты сегодня прям сыпешь конструктивным аргументами :)

Ну реально бредятина. Я не понимаю...ясно, что не понял Хвост, то бредятина :) ты пол случаем не сменил?
...
Рейтинг: 0 / 0
Получить массив из строк с разделителями
    #39102528
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAясно, что не понял Хвост, то бредятина :) ты пол случаем не сменил?

Хм.. Скайана сливается, вот это что-то новенькое.
Стареешь чтоль? Решил на старости кусты окучить
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Получить массив из строк с разделителями
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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