Abdalla Ben Omran Ответов: 1

Как я могу объединить 3 таблицы с помощью LINQ в C# ?


Я укладываюсь с Join LINQ в C#

У меня есть этот запрос в SQL server :

SELECT cu.UserName, cu.DruckerA4,fd.Beschreibung
FROM Config_User cu
JOIN Filiale_User fu ON fu.UserID = cu.UserID
JOIN Filialdaten fd ON fd.FilialID = fu.FilialID


и я пытаюсь написать код LINQ с этим запросом. он должен делать ту же самую работу .
то, что я делал до сих пор, - это получение элементов от ConfigUser в методе, но затем я складываю, как сделать соединение с таблицами anotehr .

я хочу присоединиться к Filialdaten и Filiale_User с Config_User

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

public List<ConfigUser> GetUser(List<ConfigUser> elements)
       {
           using (IDbConnection connection = new SqlConnection (CS))
           {
               connection.Open();
               elements = connection.Query<ConfigUser>(" select UserName,DruckerA4 from Config_User").ToList();

           }
           return elements;
       }


метод соединения, который я укладываю вместе с :
public void JoinTable(List<ConfigUser> elements)
       {
           using (IDbConnection connection = new SqlConnection(CS))
           {
               connection.Open();
               var innerJoin = from cu in elements
                               join
             }
       }

1 Ответов

Рейтинг:
9

Maciej Los

Я бы настоятельно рекомендовал прочитать это: Выполнение внутренних соединений (LINQ в C#) | Microsoft Docs[^]

А теперь проверьте вот это:

var qry = (from cu in Config_User
    join fu in Filiale_User on fu.UserID equals cu.UserID
    join fd in Filialdaten on fd.FilialID equals fu.FilialID
    select new LoadResult
    (
        UserName = cu.UserName,
        DruckerA4 = cu.DruckerA4,
        Beschreibung = fd.Beschreibung
    )).ToList();


[no name]

поэтому я сделал следующее :
общественного IEnumerable&ЛТ;loadresult&ГТ; JoinTable(список<configuser&ГТ; ConfigsUser, список<filiale_user> по филиалу, список<filialdaten&ГТ; FilialData)
{
var query = from cu in ConfigsUser
присоединяйтесь к фу в филиалу на КР.Идентификатор пользователя равен фу.идентификатор пользователя
присоединяйтесь к fd в FilialData на fu.FilialId равен fd.FilialID
выберите новый LoadResult
{
Имя пользователя = КР.Имя пользователя,
DruckerA4 = cu.DruckerA4,
Beschreibung = fd.Beschreibung
};

var list = запрос.Список();
возвратный запрос;
}
но я по-прежнему сталкиваются с problmen который :
список var равен 0
если я отлажу возвращаемый запрос, то найду непубличный член, а затем "внутренний", который имеет значение 29, и это то значение, которое мне нужно . а в представлении результатов я нахожу "перечисление не дало никаких результатов", и в конце концов я не могу получить значения .

Maciej Los

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

[no name]

Я все еще делаю это .. будете видеть . спасибо за вашу помощь

Maciej Los

Всегда пожалуйста.
Удачи вам!

[no name]

Я нашел жучок, и теперь он работает так, как и должен быть . я использую Dapper, и один из prop не выбран из select statment, таким образом, имеет значение 0000 и не может найти FK в другой таблице, поэтому было такое странное поведение .

Maciej Los

Превосходно!