powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Неверный запрос linq на объединение таблиц
5 сообщений из 5, страница 1 из 1
Неверный запрос linq на объединение таблиц
    #40111990
AlenaLis16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, задача такая, есть 2 таблицы excel, нужно их вывести в два листбокса, а в 3 по кнопке объединить, собственно, объединить их так, чтобы в первой колонке был id, название товара, цвет, размер и поставщик. По сути, нужно добавить колонку id их 2 таблицы в 1-ую таблицу, но проблема в том, что я что-то намудрила и оно соединяет не по тем id. Помогите, если не сложно.
Код: 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.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Excel = Microsoft.Office.Interop.Excel;

namespace laba_3.Pages
{
    /// <summary>
    /// Логика взаимодействия для StartWindowPage.xaml
    /// </summary>
    public partial class StartWindowPage : Page
    {
        public List<Data1> objects = new List<Data1>();
        public List<Data1> objects2 = new List<Data1>();
        public List<Data3> objects3 = new List<Data3>();
        public class DataD
        {
            public string nameOfMaterial { get; set; }
            public string color { get; set; }
            public string size { get; set; }
            public string supplier { get; set; }
            public int id { get; set; }
        }
        public class Data1
        {
            public string nameOfMaterial { get; set; }
            public string color { get; set; }
            public string size { get; set; }
            public string supplier { get; set; }

            public int id { get; set; }
        }
        public class Data2
        {
            public string nameOfMaterial { get; set; }
            public int id { get; set; }
        }
        public class Data3
        {
            public string nameOfMaterial { get; set; }
            public string color { get; set; }
            public string size { get; set; }
            public string supplier { get; set; }
            public int id { get; set; }
        }
        public StartWindowPage()
        {
            InitializeComponent();
        }

        private void ExitButtonClick(object sender, RoutedEventArgs e)
        {
            Environment.Exit(0);
        }

        private void JoinListButtonClick(object sender, RoutedEventArgs e)
        {
            //ERR
            var result = from pl in objects
                         join t in objects2 on pl.nameOfMaterial equals t.nameOfMaterial
                         select new { nameOfMaterial = pl.nameOfMaterial, id = t.id, color = pl.color, size = pl.size, supplier = pl.supplier };
          

            //ERR
            var result2 = objects.Join(objects2, // второй набор
             p => p.nameOfMaterial, // свойство-селектор объекта из первого набора
             t => t.nameOfMaterial, // свойство-селектор объекта из второго набора
            (p, t) => new { nameOfMaterial = p.nameOfMaterial, id = t.id, color = p.color, size = p.size, supplier = p.supplier });


            foreach (var item in result)
            {
                ListBox33.Items.Add(item.nameOfMaterial.ToString());
                ListBox33.Items.Add(item.id.ToString());
                ListBox33.Items.Add(item.color.ToString());
                ListBox33.Items.Add(item.size.ToString());
                ListBox33.Items.Add(item.supplier.ToString());
            }
        }

        private void ViewListsButtonClick(object sender, RoutedEventArgs e)
        {
            Excel.Application excelApp = new Excel.Application();
            excelApp.Visible = false; // Отвечает за то, будет ли видимо приложен
            string path = @"E:\laba_3\laba_3\excelTables\book1.xlsx";

            excelApp.Workbooks.Open(path);


            int row = 2;
            ArrayList maping = new ArrayList();
            Excel.Worksheet currentSheet = (Excel.Worksheet)excelApp.Workbooks[1].Worksheets[1];
            while (currentSheet.get_Range("A" + row).Value2 != null)
            {
                for (char column = 'A'; column < 'E'; column++)
                {
                    Excel.Range cell = currentSheet.get_Range(column.ToString() + row.ToString());
                    maping.Add(cell != null ? cell.Value2.ToString() : "");
                }
                row++;
            }
            excelApp.Quit();


            Excel.Application excelApp2 = new Excel.Application();
            excelApp2.Visible = false; // Отвечает за то, будет ли видимо приложен
            string path22 = @"E:\laba_3\laba_3\excelTables\book2.xlsx";

            excelApp2.Workbooks.Open(path22);

            int row2 = 2;
            ArrayList maping2 = new ArrayList();
            Excel.Worksheet currentSheet2 = (Excel.Worksheet)excelApp2.Workbooks[1].Worksheets[1];
            while (currentSheet2.get_Range("A" + row2).Value2 != null)
            {
                for (char column = 'A'; column < 'C'; column++)
                {
                    Excel.Range cell = currentSheet2.get_Range(column.ToString() + row2.ToString());
                    maping2.Add(cell != null ? cell.Value2.ToString() : "");
                }
                row2++;
            }

            excelApp2.Quit();

            for (int counter = 0; counter < maping.Count; counter += 4)
            {
                objects.Add(new Data1
                {
                    nameOfMaterial = maping[counter].ToString(),
                    color = maping[counter + 1].ToString(),
                    size = maping[counter + 2].ToString(),
                    supplier = maping[counter + 3].ToString()
                });
            }

            for (int counter = 0; counter < maping2.Count; counter += 2)
            {
                objects2.Add(new Data1
                {
                    nameOfMaterial = maping2[counter].ToString(),
                    id = Convert.ToInt32(maping2[counter + 1])
                });
            }

            foreach (var item in objects)
            {
                ListBox3.Items.Add(item.nameOfMaterial.ToString());
                ListBox3.Items.Add(item.color.ToString());
                ListBox3.Items.Add(item.size.ToString());
                ListBox3.Items.Add(item.supplier.ToString());
            }

            foreach (var item in objects2)
            {
                ListBox2.Items.Add(item.nameOfMaterial.ToString());
                ListBox2.Items.Add(item.id.ToString());
            }
        }
    }
}
...
Рейтинг: 0 / 0
Неверный запрос linq на объединение таблиц
    #40112014
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlenaLis16
оно соединяет не по тем id. Помогите, если не сложно.
Конечно не сложно. Вам подробно описать свою проблему сложно, а нам угадать, что у вас за проблема не сложно.


AlenaLis16
оно соединяет не по тем id
соединений по id в коде не обнаружено. Наверное в этом проблема
...
Рейтинг: 0 / 0
Неверный запрос linq на объединение таблиц
    #40112015
AlenaLis16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, соединяться должно по наименованию товара, добавив колонку id в результирующую таблицу...
...
Рейтинг: 0 / 0
Неверный запрос linq на объединение таблиц
    #40112031
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну не хотите описывать проблему - как хотите
...
Рейтинг: 0 / 0
Неверный запрос linq на объединение таблиц
    #40112146
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
select bar.ID, foo.*
from FooTable foo
left join BarTable bar on foo.Name = bar.Name
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Неверный запрос linq на объединение таблиц
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (10): Анонимы (7), Google Bot, Yandex Bot, Bing Bot 1 мин.
x
x
Закрыть


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