powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ. Из DataRow, оперируя String получить иные DataRow
11 сообщений из 11, страница 1 из 1
LINQ. Из DataRow, оперируя String получить иные DataRow
    #35832070
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одной таблице (Таблица1) имеется ряд полей, среди которых меня интересует одно. Нужно выбрать из этого поля все не пустые значения, исключив дублирования. Так же имеется некая Таблица2, содержащая в себе 2 поля: ID и Name.
Нужно выборку, полученную из Таблица1 закинуть в Таблица2.
Интересуюсь, как это можно сделать через один единственный LINQ-запрос.
Изначально составил такой:
Код: plaintext
1.
2.
                            IEnumerable<string> myRows = dataset.Tables["ImportedData"].AsEnumerable()
                                .Where((n, x) => n[11] != DBNull.Value).Select(n =>  ((string)n[11]).Trim()).Distinct().OrderBy(s => s);
В результате в myRows получаю выборку:

АрхитектураПроектированиеСтроительство...
Но повторюсь - я бы хотел получить набор готовых объектов DataRow... Т.о. продолжаю переделывать запрос. Пытался сделать это так:
Код: plaintext
1.
2.
3.
4.
5.
IEnumerable<DataRow> myRows = dataset.Tables["ImportedData"].AsEnumerable()
.Where((n, x) => n[11] != DBNull.Value).Select(n => { n = dataset.Tables["Activity"].NewRow(); 
n[1] = ((string)n[11]).Trim(); return n; }).Distinct().OrderBy(s => s);

dataset.Tables["Activity"].LoadDataRow(myRows.ToArray(), false);
Но в приведенном коде есть один затык:

Select(n => { n = dataset.Tables["Activity"].NewRow();
n[1] = ((string) n [11]).Trim(); return n; })

мне видится, что эта часть кода должна выглядеть как-то так:

Код: plaintext
1.
Select((n,m) =>{n = dataset.Tables["Activity"].NewRow(); n[1] = ((string)m[11]).Trim(); return n;})

Но у Select вроде как нет такого варианта параметров... Как это правильно разрулить?
...
Рейтинг: 0 / 0
LINQ. Из DataRow, оперируя String получить иные DataRow
    #35832075
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется мне LINQ не для этого создан. Хотите оперировать DataRow - юзайте стандартный ADO.NET. А так - забивка гвоздей микроскопом.
...
Рейтинг: 0 / 0
LINQ. Из DataRow, оперируя String получить иные DataRow
    #35832078
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытался еще так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
IEnumerable<DataRow> myRows = dataset.Tables["ImportedData"].AsEnumerable()
  .Where((n, x) => n[11] != DBNull.Value).Select(n =>
       {
           DataRow m = dataset.Tables["Activity"].NewRow();
           m[1] = ((string)n[11]).Trim(); return m;
        }).Distinct().OrderBy(s => s);
dataset.Tables["Activity"].LoadDataRow(myRows.ToArray(), false);
тоже нет нужного результата...
...
Рейтинг: 0 / 0
LINQ. Из DataRow, оперируя String получить иные DataRow
    #35832080
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredКажется мне LINQ не для этого создан. Хотите оперировать DataRow - юзайте стандартный ADO.NET. А так - забивка гвоздей микроскопом.
Почему? Ведь сама суть LINQ (как я понял) - манипулирование данными, в каком бы виде они не хранились.
...
Рейтинг: 0 / 0
LINQ. Из DataRow, оперируя String получить иные DataRow
    #35832083
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё Андрей, спасибо за отзыв - я разобрался сам:
Код: plaintext
1.
2.
3.
4.
5.
6.
IEnumerable<DataRow> myRows = dataset.Tables["ImportedData"].AsEnumerable()
 .Where((n, x) => n[11] != DBNull.Value).Select(n =>
 {
   DataRow m = dataset.Tables["Activity"].NewRow();
   m[1] = ((string)n[11]).Trim(); return m;
  }).Distinct().OrderBy(n => (string) n[1]);
...
Рейтинг: 0 / 0
LINQ. Из DataRow, оперируя String получить иные DataRow
    #35832087
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а нет... рано я радовался:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
                            IEnumerable<DataRow> myRows = dataset.Tables["ImportedData"].AsEnumerable()
                                .Where((n, x) => n[11] != DBNull.Value).Select(n =>
                                {
                                    DataRow m = dataset.Tables["Activity"].NewRow();
                                    m[1] = ((string)n[11]).Trim(); return m;
                                }).Distinct(DataRowComparer.Default).OrderBy(n => (string) n[1]);

                           DataTable activity = dataset.Tables["Activity"]; 
                           foreach (DataRow item in myRows)
                           {
                               activity.Rows.Add(item);
                           }
работать-то работает, да результат не тот: не учел, что оперировать мне нужно строками (для Distinct)...
...
Рейтинг: 0 / 0
LINQ. Из DataRow, оперируя String получить иные DataRow
    #35832097
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем не хватает соображалки... Сделал по-простому:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
                            IEnumerable<string> myRows = dataset.Tables["ImportedData"].AsEnumerable()
                                .Where((n, x) => n[11] != DBNull.Value).Select(n =>((string)n[11]).Trim()).Distinct().OrderBy(n => n);

                           DataTable activity = dataset.Tables["Activity"]; 
                           foreach (string item in myRows)
                           {
                               DataRow newRow = activity.NewRow();
                               newRow[1] = item;
                               activity.Rows.Add(newRow);
                           }
Работает верно.
...
Рейтинг: 0 / 0
LINQ. Из DataRow, оперируя String получить иные DataRow
    #35832418
тихая гавань
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositum,
“Нужно выборку, полученную из Таблица1 закинуть в Таблица2.”
Почитайте об основах функционального программирования.
...
Рейтинг: 0 / 0
LINQ. Из DataRow, оперируя String получить иные DataRow
    #35832534
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тихая гаваньCompositum,
“Нужно выборку, полученную из Таблица1 закинуть в Таблица2.”
Почитайте об основах функционального программирования.
вопрос уже снят. не вижу смысла в абстрактных ответах =)
...
Рейтинг: 0 / 0
LINQ. Из DataRow, оперируя String получить иные DataRow
    #35866209
Фотография Fatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositum,
наткнулся на похожую проблему -
из Автокада данные надо добавлять в
таблицу с primary key (где уже есть заполненные строки)
Будь добр, свяжись со мной через caduser.ru -> Персональные сообщения

fixo

~'J'~
...
Рейтинг: 0 / 0
LINQ. Из DataRow, оперируя String получить иные DataRow
    #35866510
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FattyCompositum,
наткнулся на похожую проблему -
из Автокада данные надо добавлять в
таблицу с primary key (где уже есть заполненные строки)
Будь добр, свяжись со мной через caduser.ru -> Персональные сообщения

fixo

~'J'~
аке
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ. Из DataRow, оперируя String получить иные DataRow
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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