Member 10525430 Ответов: 1

Основы образования показывают пункта больше, чем один


Привет,

Я пытаюсь использовать этот код, однако он показывает мне элемент более одного

как я могу это исправить?
var element = (from h in ent.REPORTHEADERs
                           join d in ent.REPORTDETAILS on h.FIS_NO equals d.FIS_NO
                           select new
                           {
                               h.SUBE_ID,
                               h.FIS_NO,
                               h.TERAZI_NO,
                               h.TERAZI_REYON_NO,
                               d.URUN_NO,
                               d.BIRIM_FIYAT,
                               h.SATICI_NO,
                               h.MUSTERI_NO,
                               h.FIS_ADET,
                               h.FIS_AGIRLIK,
                               h.TUTAR,
                               h.IPTAL,
                               h.ILK_ISLEM_TARIHI,
                               h.SON_ISLEM_TARIHI,
                               h.FIS_SAYISI,
                               h.TERAZI_ADIIP
                           }).ToList();


Что я уже пробовал:

Я попытался прокомментировать часть соединения и ее работу идеально однако я добавляю часть соединения я получаю один и тот же элемент 3 раза

Ehsan Sajjad

это происходит потому, что у вас, вероятно, есть отношение один ко многим с таблицей деталей из главной таблицы.

Member 10525430

как я могу это исправить?

1 Ответов

Рейтинг:
2

Prifti Constantine

Вы могли бы попробовать:

.ToList().FirstOrDefault();

в конце метода ToList (), чтобы получить первый элемент, который удовлетворяет оператору, если вы ищете одно значение, чтобы вернуться.


Member 10525430

но это источник данных gridview, и когда я устанавливаю firstordefault, я получаю только один элемент, но у меня есть 3 элемента.

Prifti Constantine

Значит, проблема не в том, что он дает более одного элемента, а в том, что он показывает один элемент более одного раза?

Member 10525430

на самом деле,

моя БД имеет 3 элемента

однако когда я использую этот код сущности я получаю 9 элементов в gridview

Prifti Constantine

Вы можете повторить список с помощью цикла ForEach, а для элемента reach, который вы хотите получить ,вы можете использовать.Distinct (); в конце концов, таким образом, он выберет одно значение для каждого элемента, так как у вас есть 3 на элемент прямо сейчас.
Способ реализовать это :
ForEach var item in ent. REPORTHEADERs
{
var element = (от h в ent. REPORTHEADERs
присоединяйтесь к Д в ЛОР.REPORTDETAILS на час.FIS_NO равных д.FIS_NO
выберите новый
{
сек.SUBE_ID,
сек.FIS_NO,
сек.TERAZI_NO,
сек.TERAZI_REYON_NO,
д. URUN_NO,
d. BIRIM_FIYAT,
сек.SATICI_NO,
сек.MUSTERI_NO,
сек.FIS_ADET,
сек.FIS_AGIRLIK,
сек.TUTAR,
сек.IPTAL,
сек.ILK_ISLEM_TARIHI,
сек.SON_ISLEM_TARIHI,
сек.FIS_SAYISI,
сек.TERAZI_ADIIP
}).Отчетливый.Список();
}

Member 10525430

это не работает правильно
когда я использую ваш код, я получаю только 2 одинаковых элемента
другие 2 разных предмета не приходят

Prifti Constantine

У вас есть еще код, который я мог бы увидеть? Или это только та часть, которая порождает ошибку?

Member 10525430

весь метод таков:

общественные объект DataTable selectGrup()
{
DataTable dt = новый DataTable();

var element = (от h в ent. REPORTHEADERs
присоединяйтесь к Д в ЛОР.REPORTDETAILS на час.FIS_NO равных д.FIS_NO
выберите новый
{
сек.SUBE_ID,
сек.FIS_NO,
сек.TERAZI_NO,
сек.TERAZI_REYON_NO,
д. URUN_NO,
d. BIRIM_FIYAT,
сек.SATICI_NO,
сек.MUSTERI_NO,
сек.FIS_ADET,
сек.FIS_AGIRLIK,
сек.TUTAR,
сек.IPTAL,
сек.ILK_ISLEM_TARIHI,
сек.SON_ISLEM_TARIHI,
сек.FIS_SAYISI,
сек.TERAZI_ADIIP
}).Отчетливый().Список();


dt = ToDataTable (элемент);

возврат dt;
}
в моей БД есть 3 элемента в деталях отчета,3 элемента в заголовке отчета

когда я запускаю программу я получаю 2 одинаковых элемента для вашего кода