Linq Lambda GroupBy和OrderBy

Linq Lambda GroupBy和OrderBy,linq,igrouping,Linq,Igrouping,我想分组,然后在组内订购物品 我该怎么处理拉姆达 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { var data = new[]

我想分组,然后在组内订购物品

我该怎么处理拉姆达

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var data = new[]
                  {
                      new { Name="Tasty", Type="Strawberries", isAvail=true, Price=1.90m, Quantity=20 },

                    new { Name="Granny Smith", Type="Apple", isAvail=false, Price=0.80m, Quantity=7 },
                    new { Name="Gala", Type="Apple", isAvail=true, Price=0.75m, Quantity=10 }

                  };

            var grouped = data.GroupBy(record => record.Type).OrderBy(x => x.Min(y => (Decimal)y.Price));

            foreach (var group in grouped)
            {
                Console.WriteLine("Key {0}", group.Key);

                foreach (var item in group)
                {
                    Console.WriteLine("\t{0}", item.Name);
                }
            }
            Console.ReadLine();
        }
    }
}
上面给了我这个

钥匙-苹果

----史密斯奶奶

----庆典

钥匙-草莓

----美味的


但正如你所看到的,Gala的价格比smith奶奶低。。。我做错了什么?请帮忙

您在订购之前正在分组。换句话说,您是在对组进行排序,而不是对组中的项目进行排序

试着先点餐

var grouped = data.OrderBy(x => x.Price).GroupBy(record => record.Type); 
这应该行得通

var grouped = data.GroupBy(record => record.Type)
.Select(g=>new {g.Key,records=g.OrderBy(r=>r.Price)})  
//此时,记录是按价格(内部分组)排序的

//现在分组也是按最低价格订购的

您试过了吗

var grouped = data.OrderBy(x => x.Price).GroupBy(record => record.Type);

不,您是根据组中的最低价格订购组。您没有在组内排序。
var grouped = data.OrderBy(x => x.Price).GroupBy(record => record.Type);