我在c#4中有以下代码,我正在尝试使用linq进行排序,分组。
IList<Component> components = Component.OrganizationalItem.OrganizationalItem.Components(true);
IEnumerable<Component> baggage = components.Where(x => x.IsBasedOnSchema(Constants.Schemas.BaggageAllowance.ToString()))
.OrderBy(x => x.ComponentValue("name").StringValue("Code"))
.GroupBy(x => x.ComponentValue("name").StringValue("Code"));
在上面的示例中,当我尝试使用GroupBy
时出现错误,请参阅以下内容:
错误1无法隐式转换类型'System.Collections.Generic.IEnumerable&gt;'到'System.Collections.Generic.IEnumerable'。存在显式转换(您是否错过了演员?)
答案 0 :(得分:2)
GroupBy
的结果将是IGrouping<string, Component>
- 它是组组件的序列,而不是一个组件序列。这就是整个分组的重点。所以这应该没问题:
IEnumerable<IGrouping<string, Component>> baggage = ... query as before ...;
或者只使用隐式输入:
var baggage = ...;
然后您可以遍历群组:
foreach (var group in baggage)
{
Console.WriteLine("Key: {0}", group.Key);
foreach (var component in group)
{
...
}
}