【问题标题】:Select hierarchical data via Linq2SQL通过 Linq2SQL 选择分层数据
【发布时间】:2011-07-14 16:10:59
【问题描述】:

天色已晚,只见树木不见森林。

我正在尝试使用以下方法选择分层数据:

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> 一定有一种简单的方法,但我看不到。

有什么想法吗?

【问题讨论】:

    标签: c# linq linq-to-sql


    【解决方案1】:

    啊,我知道这很容易。在考虑如何在查询中填充 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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      相关资源
      最近更新 更多