2

是否有另一种方法可以对多个连接模型的结果进行分组?将每个模型选择为匿名类型然后分组有效,但我不知道这是正确的做法。

所有条件都在IQueryables我在此查询之外设置的三个中:attrDatas, dataIds, and filterIds.

var query = (
    from a in attrDatas
    join d in dataIds
        on a.Id equals d.Id
    join f in filterIds
        on new { a.Id, a.AltId } equals new { f.Id, f.AltId }
    select new
    {
        ad = a,
        di = d,
        //fi = f,
    }
    into grouped
    group grouped by grouped.ad.AltId into g
    select new VwModel
    {
        AltId = g.Key,
        MaxReturn = g.Max(z => z.ad.Return),
        PriceUsd = g.Max(z => z.ad.Price),
        ApproxVal = g.Sum(z => (z.ad.Price*z.ad.Shares)),
        HoldDate = g.Max(z => z.di.HoldDate),
    });
4

1 回答 1

0

我没有看到任何其他方式。底层group by等效于GroupBy()扩展方法。在每个重载中,第一个输入参数是一个IQueryable<TSource>,它是唯一携带数据的参数。(其他参数是Expression确定分组和输出的 s)。因此,此输入列表应包含您希望在分组后在结果集中显示的所有内容。

因此,您必须构建一个匿名类型(顺便说一句,≠泛型)。group a by a.AltId例如,使用推动df超出范围。

于 2012-11-23T23:37:53.273 回答