Загрузочная таблица не следующая ширина с дисплеем: блок

Necromancing. Если используется поставщик LINQ, основанный на базе данных, может быть записано значительно более читаемое левое внешнее соединение:

from maintable in Repo.T_Whatever 
from xxx in Repo.T_ANY_TABLE.Where(join condition).DefaultIfEmpty()

Если вы опустите DefaultIfEmpty(), у вас будет внутреннее соединение.

Возьмите принятый ответ:

  from c in categories
    join p in products on c equals p.Category into ps
    from p in ps.DefaultIfEmpty()

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

Примечание. Следует отметить, что from alias in Repo.whatever.Where(condition).DefaultIfEmpty() является таким же, как внешний-apply / left-join-lateral, который любой (не отсталый) оптимизатор базы данных отлично способен перевести в левое соединение , до тех пор, пока вы не вводите значения строк (например, фактическое внешнее применение). Не делайте этого в Linq-2-Objects (потому что при использовании Linq-to-Objects нет DB-оптимизатора).

Подробный пример

var query2 = (
    from users in Repo.T_User
    from mappings in Repo.T_User_Group
         .Where(mapping => mapping.USRGRP_USR == users.USR_ID)
         .DefaultIfEmpty() // <== makes join left join
    from groups in Repo.T_Group
         .Where(gruppe => gruppe.GRP_ID == mappings.USRGRP_GRP)
         .DefaultIfEmpty() // <== makes join left join

    // where users.USR_Name.Contains(keyword)
    // || mappings.USRGRP_USR.Equals(666)  
    // || mappings.USRGRP_USR == 666 
    // || groups.Name.Contains(keyword)

    select new
    {
         UserId = users.USR_ID
        ,UserName = users.USR_User
        ,UserGroupId = groups.ID
        ,GroupName = groups.Name
    }

);


var xy = (query2).ToList();

При использовании с LINQ 2 SQL он хорошо переведёт на следующий очень читаемый SQL-запрос:

SELECT 
     users.USR_ID AS UserId 
    ,users.USR_User AS UserName 
    ,groups.ID AS UserGroupId 
    ,groups.Name AS GroupName 
FROM T_User AS users

LEFT JOIN T_User_Group AS mappings
   ON mappings.USRGRP_USR = users.USR_ID

LEFT JOIN T_Group AS groups
    ON groups.GRP_ID == mappings.USRGRP_GRP

Редактировать:

См. Также & quot; Конвертировать запрос SQL Server в запрос Linq & quot; для более сложного примера.

Кроме того, если вы делаете это в Linq-2-Objects (вместо Linq-2-SQL), вы должны сделать это старомодно (потому что LINQ to SQL правильно это переводит для присоединения операции, но над объектами этот метод заставляет полностью сканировать и не использует поиск по индексу, почему ...):

    var query2 = (
    from users in Repo.T_Benutzer
    join mappings in Repo.T_Benutzer_Benutzergruppen on mappings.BEBG_BE equals users.BE_ID into tmpMapp
    join groups in Repo.T_Benutzergruppen on groups.ID equals mappings.BEBG_BG into tmpGroups
    from mappings in tmpMapp.DefaultIfEmpty()
    from groups in tmpGroups.DefaultIfEmpty()
    select new
    {
         UserId = users.BE_ID
        ,UserName = users.BE_User
        ,UserGroupId = mappings.BEBG_BG
        ,GroupName = groups.Name
    }

);

0
задан Yanis Bendahmane 13 July 2018 в 12:58
поделиться

1 ответ

Попробуйте мой код таблицы,

.viewTable {
        table-layout:fixed;
        margin:auto;
    }
    .thData, .tdData {
        padding:8px;
    text-align: center;
    }
    .theadData, tfoot {
    background-color: #9ac9fb;
        display:table;
        width:100%;
    }
    .table-height .table .tdData {
    vertical-align: middle !important; 
    }
    .viewTable .tbodyData {
        max-height:250px;
        overflow:auto;
        overflow-x:hidden;
        display:block;
    width:100%;
    }
    .item-dist .tbodyData {
        height:490px;
        overflow:auto;
        overflow-x:hidden;
    width:100%;
    }



    .tbodyData .trData {
        display:table;
        width:100%;
        table-layout:fixed;
        border-bottom: 1px solid #ffffff !important;
    }
    .table .theadData .thData {
    border: none !important;
    width: 10% !important;
        text-align: center;
    padding: 10px;
    }
 <table align="center" class="table table-hover viewTable">
            <thead class="theadData">
                <tr class="trData">
                    <th class="thData">Column 1</th>

                    <th class="thData">Column 2</th>
                    <th class="thData">Column 3</th>

                    
                    <th class="thData">Column 4</th>
                  </tr>
            </thead>
  
            <tbody class="tbodyData">
            
                  <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>                  <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>                  <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>                  <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
                                              <tr class="trData">
                    <td class="tdData">A</td>
                    <td class="tdData">B</td>
                    <td class="tdData">C</td>
                    <td class="tdData">D</td>
                    
                            </tr>
     
             
                 
            </tbody>
      </table>

0
ответ дан A.Sakkeer 17 August 2018 в 12:48
поделиться