我有一个可查询的对象集合,它有两个相关属性,Retailer
和Price
。我想为每个零售商选择一个对象(价格最低的对象),然后显示按零售商名称的第一个字母分组的对象列表,例如所有与零售商最低价格对应的对象,以第一组中的字母“A”开头,下一组为“B”等。
一旦我按零售商对Linq查询进行分组,我很难搞清楚如何对对象进行Select
查询而不将查询减少到Price
属性列表,因此丢失对象的引用,例如
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可能会受到限制。
答案 0 :(得分:1)
所以你只需要一个零售商和最低价格的关键价值对列表? 难道你不能只选择一个匿名类型吗?
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。