Ill*_*ych 184 c# linq select igrouping
我有关于IGrouping和Select()方法的问题.
让我说我有IEnumerable<IGrouping<int, smth>>这样的方式:
var groups = list.GroupBy(x => x.ID);
Run Code Online (Sandbox Code Playgroud)
列表是一个List<smth>.
现在我需要以IGrouping某种方式将每个值传递给另一个列表:
foreach (var v in structure)
{
v.ListOfSmth = groups.Select(...); // <- ???
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议如何List<smth>从IGrouping<int, smth>这样的上下文中获取values()吗?
Mat*_*ith 260
自从IGrouping<TKey, TElement>实现以来IEnumerable<TElement>,您可以使用SelectMany将所有IEnumerables背部IEnumerable组合在一起:
List<smth> list = new List<smth>();
IEnumerable<IGrouping<int, smth>> groups = list.GroupBy(x => x.id);
IEnumerable<smth> smths = groups.SelectMany(group => group);
List<smth> newList = smths.ToList();
Run Code Online (Sandbox Code Playgroud)
Tim*_*ols 30
foreach (var v in structure)
{
var group = groups.Single(g => g.Key == v. ??? );
v.ListOfSmth = group.ToList();
}
Run Code Online (Sandbox Code Playgroud)
首先,您需要选择所需的组.然后你可以使用ToList组上的方法.这IGrouping是一个IEnumerable价值观.
use*_*513 15
从IGrouping的定义:
IGrouping<out TKey, out TElement> : IEnumerable<TElement>, IEnumerable
Run Code Online (Sandbox Code Playgroud)
你可以迭代这样的元素:
IEnumerable<IGrouping<int, smth>> groups = list.GroupBy(x => x.ID)
foreach(IEnumerable<smth> element in groups)
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
Bro*_*nek 13
上述答案的更明确版本:
IEnumerable<IGrouping<int, ClassA>> groups = list.GroupBy(x => x.PropertyIntOfClassA);
foreach (var groupingByClassA in groups)
{
int propertyIntOfClassA = groupingByClassA.Key;
//iterating through values
foreach (var classA in groupingByClassA)
{
int key = classA.PropertyIntOfClassA;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
var groups = list.GroupBy(x => x.ID);
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议如何在这种情况下从 IGrouping<int, smth> 获取值(列表)?
“IGrouping<int, smth> group”实际上是一个带键的 IEnumerable,所以你要么:
foreach (IGrouping<int, smth> group in groups)
{
var thisIsYourGroupKey = group.Key;
List<smth> list = group.ToList(); // or use directly group.foreach
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
178470 次 |
| 最近记录: |