簡體   English   中英

將SQL轉換為LINQ等效項

[英]Convert SQL to LINQ equivalent

我在將此語法轉換為Linq時遇到麻煩:

SELECT 
    Medlemmer.Skif, 
    Grader.Grad, 
    Medlemmer.Navn, 
    Medlemmer.Mellemnavn, 
    Medlemmer.Efternavn, 
    Medlemmer.Adresse, 
    Medlemmer.Telefon, 
    Medlemmer.Mobil, 
    Medlemmer.PostNr, 
    Medlemmer.town, 
    Medlemmer.mail, 
    Medlemmer.Picture 
FROM 
    Medlemmer 
    CROSS APPLY Get_grader(Medlemmer.Skif) as Grader 
WHERE 
    Medlemmer.Aktiv = 1
ORDER BY 
    Medlemmer.Navn

Get_grader()是返回包含數據的表的函數)

我在這里:

var q = from a in db.GetTable<Medlemmer>()
           where a.Aktiv == true
           orderby a.Navn
           select new
               {
                 Grad = db.Get_grader(Convert.ToInt32(a.Skif)),
                 Skif = a.Skif,
                 Navn = a.Navn,
                 Mellemnavn = a.Mellemnavn,
                 Efternavn = a.Efternavn,
                 Adresse = a.Adresse,
                 Telefon = a.Telefon,
                 Mobil = a.Mobil,
                 PostNr = a.PostNr,
                 town = a.town,
                 mail = a.mail,
                 Picture = a.Picture 
               };

現在,研究生院返回“ System.Collections.Generic.List`1 [Get_grader]”

如何獲得正確的值?

也許是這樣的:

var q = from a in db.GetTable<Medlemmer>()
            from grad in db.Get_grader(Convert.ToInt32(a.Skif))
           where a.Aktiv == true
           orderby a.Navn
           select new
               {
                 Skif = a.Skif,
                 Grad =grad.Grad
                 Navn = a.Navn,
                 Mellemnavn = a.Mellemnavn,
                 Efternavn = a.Efternavn,
                 Adresse = a.Adresse,
                 Telefon = a.Telefon,
                 Mobil = a.Mobil,
                 PostNr = a.PostNr,
                 town = a.town,
                 mail = a.mail,
                 Picture = a.Picture 
               };

或者,如果您只需要一個平地機列表。 然后可能是這樣的:

var q = from a in db.GetTable<Medlemmer>()
           where a.Aktiv == true
           orderby a.Navn
           select new
               {
                 Skif = a.Skif,
                 Grad = db.Get_grader(Convert.ToInt32(a.Skif))
                                       .Select(s=>s.Grad),
                 Navn = a.Navn,
                 Mellemnavn = a.Mellemnavn,
                 Efternavn = a.Efternavn,
                 Adresse = a.Adresse,
                 Telefon = a.Telefon,
                 Mobil = a.Mobil,
                 PostNr = a.PostNr,
                 town = a.town,
                 mail = a.mail,
                 Picture = a.Picture 
               };

我尚未能夠測試,但是請嘗試以下操作:

var q = from a in db.GetTable<Medlemmer>()
        from g in db.Get_grader(Convert.ToInt32(a.Skif))
           where a.Aktiv == true
           orderby a.Navn
           select new
               {
                 Grad = g.Grad,
                 Skif = a.Skif,
                 Navn = a.Navn,
                 Mellemnavn = a.Mellemnavn,
                 Efternavn = a.Efternavn,
                 Adresse = a.Adresse,
                 Telefon = a.Telefon,
                 Mobil = a.Mobil,
                 PostNr = a.PostNr,
                 town = a.town,
                 mail = a.mail,
                 Picture = a.Picture 
               };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM