1

我在 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它时出现错误,请参见下文:

无法将类型“ System.Collections.Generic.IEnumerable<System.Linq.IGrouping<string,Tridion.ContentManager.ContentManagement.Component>>”隐式转换为“ System.Collections.Generic.IEnumerable<Tridion.ContentManager.ContentManagement.Component>”。存在显式转换(您是否缺少演员表?)*

4

1 回答 1

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)
    {
        ...
    }
}
于 2013-04-18T06:09:27.763 回答