2012-02-14 6 views
0

私はLINQのにこの構文の変換に問題があります。コンバートSQL

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 
       }; 

Gradは "System.Collections.Generic.List`1 [Get_grader]"を返します。

彼は正しい値ですか?

答えて

2

は、私がテストすることができたが、これを試していない。

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 
       }; 
+0

ブリリアント。ありがとう! –

2

たぶん、このような何か:

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 
       }; 
関連する問題