Převedení SQL to Linq – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Převedení SQL to Linq – .NET – Fórum – Programujte.comPřevedení SQL to Linq – .NET – Fórum – Programujte.com

 

Esk
~ Anonymní uživatel
2 příspěvky
23. 12. 2009   #1
-
0
-

Zdravím, potřeboval bych převést SQL příkaz do LINQ v C#.
Lámu si s tím hlavu a nějak mi to nejde. Co potřebuju, tak je aby se mi zobrazovali i řádky, kde není které nemají vytvořený řádek v druhé nebo třetí tabulce, normálně se totiž nezobrazují.
Stručně: mam 3 tabulky - Customers(Id,jmeno,CompanyId...), CustomerDetail(Id,Adresa...), Companies(Id,Title) a vyhledávací formulář s Jménem, příjmením, adresou, a názvem společnosti ve které zákazník pracuje a potřebuju Linq příkaz který mi vybere všechno co potřebuju s vyplněním některé z těch čtyř položek.

Tady je ten SQL příkaz:

SELECT        Customers.*, Customers.Name, Customers.Lastname, CustomerDetail.Address, Companies.Title

FROM Companies INNER JOIN
Customers ON Companies.CompanyId = Customers.CompanyId INNER JOIN
CustomerDetail ON Customers.CustomerId = CustomerDetail.CustomerId
WHERE (Customers.Name = @Name) AND (Customers.Lastname = @LastName) AND (CustomerDetail.Address = @Address) AND (Companies.Title = @Title)


Díky.

Nahlásit jako SPAM
IP: 82.113.51.–
23. 12. 2009   #2
-
0
-
Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
Esk
~ Anonymní uživatel
2 příspěvky
27. 12. 2009   #3
-
0
-

Zkoušel jsem to, ale mám problém s tím, že když v jiné než hlavní tabulce není třeba něco vyplněného, dejme tomu adresa, tak se mezi těma řádkama vůbec nevyhledává. Takže mám v databázi třeba 5 uživatelů, a 3 z nich nemají vyplněnou adresu a ty se mi ve vyhledavaní vůbec nezobrazí.

Můj linq kód:



var query = from s in dc.Customers
where (s.Name.Contains(jmeno) && s.Lastname.Contains(prijmeni))
join s1 in dc.Companies on s.CompanyId equals s1.CompanyId
into tmpjoin
join s2 in dc.CustomerDetails on s.CustomerId equals s2.CustomerId
into tmpjoin2
from x1 in tmpjoin.DefaultIfEmpty()
where x1.Title.Contains(spolecnost)
from y1 in tmpjoin2.DefaultIfEmpty()
where y1.Address.Contains(adresa)

select new
{
Jméno = s.Name,
Příjmení = s.Lastname,
Adresa = y1.Address,
Společnost = x1.Title,
Telefon = y1.Telephone,
Email = y1.Email
};

Nahlásit jako SPAM
IP: 82.113.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Podobná vlákna

SQL to LINQ — založil jabo

SQL to LINQ — založil jabo

Problém s LINQ to SQL — založil vdolek

DATUM - převedení — založil Counter

C#-Převedení do pole — založil Khubajsn

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý