lambda 分类抽取N条

从每个分类中,按照比例抽取

lista中percent是比例,按照这个比例抽取。

static List<A> lista = new List<A>()
        {
            new A(){aid=1,percent=30,cid=1},
            new A(){aid=2,percent=30,cid=1},
            new A(){aid=3,percent=40,cid=1},
        };

        static List<B> listb = new List<B>()
        {
            new B(){bid=1,bname="1t",aid=1},
            new B(){bid=2,bname="2t",aid=1},
            new B(){bid=3,bname="3t",aid=1},
            new B(){bid=4,bname="4t",aid=1},
            new B(){bid=5,bname="5t",aid=2},
            new B(){bid=6,bname="6t",aid=2},
            new B(){bid=7,bname="7t",aid=2},
            new B(){bid=8,bname="8t",aid=2},
            new B(){bid=9,bname="9t",aid=3},
            new B(){bid=10,bname="10t",aid=3},
            new B(){bid=11,bname="11t",aid=3},
            new B(){bid=12,bname="12t",aid=3},
            new B(){bid=13,bname="13t",aid=4},
        };
        static void Main()
        {
            var o = listb.Join(lista, b => b.aid, a => a.aid, (b, a) => new { b.bid,b.aid, b.bname, a.percent })
                .GroupBy(x => x.aid)
                .SelectMany(t => t.OrderBy(x=>Guid.NewGuid()).Select((b, i) => new { b.aid,b.bid,b.bname,b.percent, i }))
                        .Where(x=>x.i+1<=x.percent/10).ToList();

            foreach (var item in o)
            {
                Console.WriteLine(item.aid+" "+item.bname);
            }
            
            Console.ReadLine();
        }




转载于:https://www.cnblogs.com/hanjun0612/p/9779780.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值