应用分组依据然后选择全部

时间:2013-04-10 06:16:06

标签: c# linq group-by

我有一个列表,其中包含以下项目:

标识
名称
货币
基金

我在此列表中应用分组,如下所示:

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

但这只会在所选数据中仅显示名称。我想要的是在名称的基础上申请分组,并在选择中获取所有项目,即 ID,姓名,货币和基金。我尝试在select中访问其他人,但他们没有Key。

3 个答案:

答案 0 :(得分:1)

试试这个:

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

现在您将获得IEnumerable<IGrouping<T>>,其中包含许多键=&gt; valueCollection items。

答案 1 :(得分:1)

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

答案 2 :(得分: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包含属于该组的所有项目