powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Запрос к двум таблицам в DataSet
5 сообщений из 5, страница 1 из 1
Запрос к двум таблицам в DataSet
    #36561389
Azeke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Сделал загрузку данных из удаленной базы в обьект DataSet:

Код: plaintext
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.
        private void button1_Click(object sender, EventArgs e)
        {
            string sdate = String.Format("{0:dd/MM/yyyy}", dateTimePicker1.Value.AddDays(-4));
            string ndate = String.Format("{0:dd/MM/yyyy}", dateTimePicker1.Value);
            string sql_nat = "select vags.mm_d, vags.mm_id, vags.sec_mod, vags.sec_num" +
                                " from (select distinct m.mm_d,m.mm_dor, m.mm_id, ss.sec_mod, ss.sec_num" +
                                   " from mmdoc.mmmm m inner join mmdoc.mmmslog log on" +
                                   " m.mm_d=log.mm_d and" +
                                   " m.mm_dor=log.mm_dor" +
                                   " left join mmdoc.mmmss ss on" +
                                   " m.mm_d=ss.mm_d and" +
                                   " m.mm_dor=ss.mm_dor" +
                                   " where pr_mm_proc='1' and pr_mm_d='0' and pr_mm_dd='0' and m.mm_d='" + ndate + "') vags" +
                                " where vags.mm_id not in (select mm_id from ASOUP.mmmv_tr)" +
                                " group by vags.mm_d, vags.mm_id, vags.sec_mod, vags.sec_num;";

            string sql_s200 = "select STF, PNS, STN, OPER_ID_ST, OPER_TS, OPER, NUM, SEC_MOD, SEC_NUM, SEC_CODE, URVS" +
                              " from ASOUP.POEZD" +
                              " where SEC_MOD is not null and SEC_NUM is not null and" +
                              " OPER_TS between timestamp('" + sdate + "', '00.00.00') and timestamp('" + ndate + "', '00.00.00')" +
                              " order by STF,PNS,STN,OPER_TS,OPER;";

            string connectionString = "Provider=IBMDADB2;Database=dd;Hostname=10.10.0.85;Protocol=TCPIP; Port=50000;Uid=Administrator;Pwd=123;";
            OleDbConnection conn = new OleDbConnection(connectionString);
            conn.Open();           
            OleDbDataAdapter da = new OleDbDataAdapter(sql_nat, conn);
            OleDbDataAdapter da1 = new OleDbDataAdapter(sql_s200, conn);
            DataSet ds = new DataSet();
            da.Fill(ds, "mm");
            da1.Fill(ds, "s200");
          
           // необходимый запрос LINQ описание ниже.

            dataGridView1.DataSource = ; //результат запроса LINQ
            conn.Close();
        }
Теперь мне необходимо сравнить обе таблицы и вывести в dataGridView1 все данные из таблицы mm и только те данные из s200 которые совпадают sec_mod, sec_num. (Как я понимаю это можно сделать LINQ. Я с ним пока не сталкивался почитал в инете не совсем понял)

т.е. SQL запрос того что мне надо:
Код: plaintext
1.
2.
3.
4.
5.
select mm.mm_d, mm.mm_id, mm.sec_mod, mm.sec_num, s200.STF, s200.PNS, s200.STN, s200.OPER_ID_ST, s200.OPER_TS, s200.OPER, NUM, s200.SEC_MOD, s200.SEC_NUM
from mm left join s200 on
mm.sec_mod=s200.SEC_MOD and
mm.sec_num=s200.SEC_NUM;

...
Рейтинг: 0 / 0
Запрос к двум таблицам в DataSet
    #36562413
Azeke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробую так:

Код: plaintext
1.
2.
3.
4.
5.
IEnumerable<string> query =
                from c in mm_tab
                join p in s200_tab
                on new { c.sec_mod, c.sec_num } equals new { p.sec_mod, p.sec_num }
                select new { c.mm_id, c.sec_mod, c.sec_num, p.STF, p.PNS, p.STN };
но пишет ошибку:

Error 3 Could not find an implementation of the query pattern for source type 'System.Data.DataTable'. 'Join' not found.
...
Рейтинг: 0 / 0
Запрос к двум таблицам в DataSet
    #36564776
Azeke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переделал вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
var query =
                from mm_tab in mm_tabs.AsEnumerable()
                join s200_tab in s200_tabs.AsEnumerable()
                on mm_tab.Field<string>("sec_mod") equals s200_tab.Field<string>("sec_mod")
                into mm_s200
                from mm in mm_s200.DefaultIfEmpty()
                select new {mm_id=mm_tab.Field<string>("mm_id"), STF=(mm.Field<string>("STF")==null ? String.Empty : mm.Field<string>("STF"))};

вроде разобрался (проверка синтаксиса ошибку не дает)

теперь хочу вывести результат в компонент
dataGridView1

Пишу так:
Код: plaintext
1.
2.
DataTable result = query.CopyToDataTable();
            dataGridView1.DataSource = result;
Но ругается на query.CopyToDataTable()
Error 3 The type 'AnonymousType#1' cannot be used as type parameter 'T' in the generic type or method 'System.Data.DataTableExtensions.CopyToDataTable<T>(System.Collections.Generic.IEnumerable<T>)'. There is no implicit reference conversion from 'AnonymousType#1' to 'System.Data.DataRow'.

Прочитал в инете статью про это http://msdn.microsoft.com/ru-ru/library/bb669096.aspx

Это про мой случай. Только я там не разобрался мне нужно в программе новый класс создовать для обработки и т.д. Это долгая история. Вопрос к вам гуру С# подскажите как можно связать dataGridView1 с результатом запроса?
...
Рейтинг: 0 / 0
Запрос к двум таблицам в DataSet
    #36564968
Azeke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никто с этим раньше не сталкиваля.
Такое ощушение, что я один на этом форуме.
Второй день прошу помощи и тишина.
...
Рейтинг: 0 / 0
Запрос к двум таблицам в DataSet
    #36565555
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он же Вам пишет в чем беда...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Запрос к двум таблицам в DataSet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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