我一直在使用101 LINQ样本来使用LINQ弄湿我的脚.这是一个很好的第一资源,但我无法看到我目前需要的一个例子.
我只需要将一个顺序组号与每个组相关联.我有一个有效的解决方案:
var groups =
from c in list
group c by c.Name into details
select new { Name = details.Key, DetailRecords = details };
int groupNumber = 0;
foreach (var group in groups)
{
//
// process each group and it's records ...
//
groupNumber++;
}
Run Code Online (Sandbox Code Playgroud)
但是,我确信可以使用LINQ来生成groupNumber.怎么样?
这取决于您的确切需求,但您可以使用:
var groupArray = groups.ToArray();
Run Code Online (Sandbox Code Playgroud)
同样,你可以使用ToList.这些数据结构是顺序的,每个组都有一个索引.
如果确实需要您创建的对象的索引,则另一个选项是使用Select:
list.GroupBy(c => c.Name)
.Select((details, ind) =>
new
{
Name = details.Key,
DetailRecords = details,
Index = ind
});
Run Code Online (Sandbox Code Playgroud)
这应该做的伎俩:
int groupNumber = 0;
var groups =
from c in list
group c by c.Name into details
select new { Name = details.Key, DetailRecords = details, grpNum = groupNumber++};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4077 次 |
| 最近记录: |