0

我有一个包含以下项目的列表:

Id
名称
货币
基金

我在此列表中应用group by如下:

var testData = from fl in fundsList
                           group fl by new { fl.Name } into groupedData
                           select new
                           {
                               groupedData.Key.Name,
                           };  

但这只给了我所选数据中的名称。我想要的是根据Name应用 group by 并在select中获取所有项目,即Id、Name、Currency 和 Fund。我尝试在选择中访问其他人,但他们没有附带 Key。

4

3 回答 3

1

尝试这个:

var testData = fundsList.GroupBy(fl => fl.Name);

现在您将获得一个IEnumerable<IGrouping<T>>,其中包含许多 key => valueCollection 项。

于 2013-04-10T06:27:20.263 回答
1
var testData = from fl in fundsList
                           group fl by new { fl.Name } into groupedData
                           select new
                           {
                              GroupName=  groupedData.Key.Name,
                              Items = grp.ToList()
                           };  
于 2013-04-10T06:40:29.663 回答
1

groupedData在您的查询IEnumerable<YourEntity>中使用属于该组的项目实现,因此您可以轻松地执行以下操作:

var testData = from fl in fundsList
                           group fl by fl.Name into groupedData
                           select new
                           {
                              Name = groupedData.Key.Name,
                              Items = grp.ToList()
                           };  

或者在基于方法的查询中:

var testData = fundsList.GroupBy(fl => fl.Name)
                        .Select(g => new { Name = g.Key, Items = g.ToList() });

集合内的每个项目都testData将具有两个属性:

  • Name带组名
  • Items包含属于该组的所有项目
于 2013-04-10T06:45:07.943 回答