在LINQ中将存储过程结果集转换为Group By

时间:2014-04-08 12:01:15

标签: linq entity-framework stored-procedures

我的存储过程返回以下数据:

PersonId PersonName RootId RootName
    1       A          1      X
    1       A          2      Y

人可以拥有多个RootId。我想在PersonId

上对这些数据进行分组
  Class Data {
             int PersonId;
             string personname;
             List<Root> Roots
          }

  Class Root {
           int   RootId;
           string RootName;
             }

我想将存储过程输出转换为List<Data>()

1 个答案:

答案 0 :(得分:3)

您可以尝试以下内容:

var data = sprocResults
    .GroupBy(p => p.PersonId)
    .Select(g => new Data
    {
        PersonId = g.Key,
        personname = g.First().PersonName,
        Roots = g.Select(r => new Root
        {
            RootId = r.RootId,
            RootName = r.RootName
        }).ToList()
    })
    .ToList();