2011-07-14 90 views
1

這裏很晚,我看不到樹林。通過Linq2SQL選擇分層數據

我想選擇下列方法處理分層數據:

return 
    from line in data 
    group line by line.LieferscheinNr into g 
    let kpf = g.First() 
    select new DESSK1 
    { 
     K1LINK = MakeDfuePartnerID(kpf.Land, kpf.VerbandNr), 
     K1LSNR = kpf.LieferscheinNr, 
     K1LSDT = decimal.Parse(kpf.LieferscheinDatum.ToString("ddMMyyyy")), 
     K1ILNW = kpf.IlnLieferanschrift, 
     K1ILNH = kpf.IlnKunde, 
     K1ILNL = kpf.IlnMandant, 
     K1CPSD = 1, 
     K1ILNB = kpf.IlnKunde, 
     K1VSDT = decimal.Parse(kpf.LieferDatum.ToString("ddMMyyyy")), 
     K1BSTN = kpf.BestellNr, 

     // this is where the compiler complains 
     DESSP2 = from pos in g 
       select new DESSP2 
       { 
        P2LSNR = pos.LieferscheinNr, 
        P2POSN = pos.Pos, 
        P2EAN = pos.EAN, 
        P2LMG = pos.Menge, 
        P2BMG = pos.MengeSoll 
       } 
    }; 

我想你可以看到我想要在這裏,但因爲DESSP2是System.Data.Link.EntitySet<DESSP2>類型和查詢類型的失敗IEnumerable<DESSP2>

必須有一個簡單的方法從IEnumerable<T>EntitySet<T>但我看不到一個。

任何想法?

回答

0

啊,我知道這很簡單。一邊想着如何填充查詢中的EntitySet的我發現這非常有效的解決方案:

How do you cast an IEnumerable<t> or IQueryable<t> to an EntitySet<t>?

但不知爲何,ToEntitySet()方法不是語言的一部分。如果你想填充分層linq表格,看起來像是一個常見的問題。

相關部分現在看起來是這樣的:

DESSP2 = (from pos in g 
      select new DESSP2 
      { 
       P2LSNR = pos.LieferscheinNr, 
       P2POSN = pos.Pos, 
       P2EAN = pos.EAN, 
       P2LMG = pos.Menge, 
       P2BMG = pos.MengeSoll 
      }).ToEntitySet()