如何将返回的“分组”Linq查询简化为平面IEnumerable?

如何将返回的“分组”Linq查询简化为平面IEnumerable?,linq,windows-phone-7,Linq,Windows Phone 7,我有一个可查询的对象集合,它有两个相关属性:零售商和价格。我想选择一个对象,即每个零售商价格最低的对象,然后显示按零售商名称第一个字母分组的对象列表,例如,与零售商最低价格相对应的所有对象,第一组中以字母“A”开头,下一组中以字母“B”开头,等等 我很难弄清楚,一旦我按零售商分组了我的Linq查询,如何在不将查询简化为价格属性列表的情况下对对象进行选择查询,从而丢失对对象的引用,例如 var query = from o in myCollection.Cast<MyObjectType&

我有一个可查询的对象集合,它有两个相关属性:零售商和价格。我想选择一个对象,即每个零售商价格最低的对象,然后显示按零售商名称第一个字母分组的对象列表,例如,与零售商最低价格相对应的所有对象,第一组中以字母“A”开头,下一组中以字母“B”开头,等等

我很难弄清楚,一旦我按零售商分组了我的Linq查询,如何在不将查询简化为价格属性列表的情况下对对象进行选择查询,从而丢失对对象的引用,例如

var query = from o in myCollection.Cast<MyObjectType>()
            group o.GetPrice(someParameter) by o.Retailer into oGroup
            select oGroup.Min() // <-- at this point I've 'lost' the objects 
                                //     and just have a list of prices
                                //     I also need to then group the results 
                                //     by o.Retailer.ToString()[0]

我使用的是Windows Phone 7,所以Linq可能会受到限制。

所以您只需要一份包含零售商和最低价格的键值对列表? 你不能像这样选择一个匿名类型吗

var query = from o in myCollection.Cast<MyObjectType>()
            group o.GetPrice(someParameter) by o.Retailer into oGroup
            select new { Retailer = oGroup.Key, Min = oGroup.Min() };

或者您也可以创建自定义类或KeyValuePair。

我需要对象,而不仅仅是价格和零售商,因为对象上还有其他属性我需要稍后访问。。。