LINQ-从数据库中为每个对象属性值获取x个对象

时间:2018-08-26 10:42:18

标签: c# linq ef-core-2.0

我有一个实体:

public class Component
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public ProductType Type { get; set; }
}

ProductType

public enum ProductType
{
    Harddrive = 1,
    GraphicCard,
    ComputerCase,
}

我正在尝试获取产品的列表,该列表在单个LINQ中包含15个随机项(每个ProductType 5个)。

同一基本类的计算机箱,图形卡和硬盘驱动器继承

现在我有这样的东西:

        var response = db.Components
            .Select(x => new Product
            {
                Id = x.Id,
                Name = x.Name,
                Type = x.Type,
            }).ToList();

但是我不知道如何实现自己的需求。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

使用相同的APP_ENV=Development bazel run //myproject:appComponents。从组的结果集合中选择组中的第一个ProductType。从该结果中提取前5个项目。

Component

当然,如果您真的想要适当的随机数,则必须将所有var result = myComponents. // take the collection of Components .GroupBy(component => component.Type) // group this into groups of components with same Type .Select(group => group.FirstOrDefault()) // from every group take the first element .Take(5) // take only the first five 个组提取到本地内存中,并使用Component从每个选定的组中提取随机组和随机元素