我如何在实体框架中编写此查询
How do i write this query in entity-framework
我有一个 table(项目)包含这种格式的记录。
Name | ProductId | Owner
Product1 | 1 | xx
Product2 | 2 | yy
Product1 | 1 | xx
Product3 | 3 | xx
Product3 | 3 | xx
Product3 | 3 | xx
Product4 | 4 | xx
Product2 | 2 | xx
Product5 | 5 | xx
我想编写 entity framework 查询,该查询将 return 前 3 个产品、它们的名称和计数。结果应该是这样的。
Result
Name: [Product3, Product2, Product1],
Count:[3, 2, 2]
我已经在 SO 上检查了其他答案,但仍然没有找到接近我想要的东西。注意 Name 和 Count returns 分别是前 3 名的列表。
以下应该有效:
products.GroupBy(p => p.ProductId)
.OrderByDescending(g => g.Count())
.Take(3);
你可以试试这个代码
var query = context
.products
.GroupBy(p => p.Name)
.OrderByDescending(g => g.Count())
.Take(3);
products.Select(p => new
{
Name = query.Select(g => g.Key).ToList(),
Count = query.Select(g => g.Count()).ToList(),
})
.FirstOrDefault();
虽然我建议您从数据库中获取前 3 名的产品,然后将其放在不同的列表中,如下所示:
var products = context.products
.GroupBy(p => p.Name)
.OrderByDescending(g => g.Count())
.Take(3)
.Select(g => new
{
Name = g.Key,
Count = g.Count()
})
.ToList();
List<string> names = products.Select(p => p.Name).ToList();
List<int> counts = products.Select(p => p.Count).ToList();
我有一个 table(项目)包含这种格式的记录。
Name | ProductId | Owner
Product1 | 1 | xx
Product2 | 2 | yy
Product1 | 1 | xx
Product3 | 3 | xx
Product3 | 3 | xx
Product3 | 3 | xx
Product4 | 4 | xx
Product2 | 2 | xx
Product5 | 5 | xx
我想编写 entity framework 查询,该查询将 return 前 3 个产品、它们的名称和计数。结果应该是这样的。
Result
Name: [Product3, Product2, Product1],
Count:[3, 2, 2]
我已经在 SO 上检查了其他答案,但仍然没有找到接近我想要的东西。注意 Name 和 Count returns 分别是前 3 名的列表。
以下应该有效:
products.GroupBy(p => p.ProductId)
.OrderByDescending(g => g.Count())
.Take(3);
你可以试试这个代码
var query = context
.products
.GroupBy(p => p.Name)
.OrderByDescending(g => g.Count())
.Take(3);
products.Select(p => new
{
Name = query.Select(g => g.Key).ToList(),
Count = query.Select(g => g.Count()).ToList(),
})
.FirstOrDefault();
虽然我建议您从数据库中获取前 3 名的产品,然后将其放在不同的列表中,如下所示:
var products = context.products
.GroupBy(p => p.Name)
.OrderByDescending(g => g.Count())
.Take(3)
.Select(g => new
{
Name = g.Key,
Count = g.Count()
})
.ToList();
List<string> names = products.Select(p => p.Name).ToList();
List<int> counts = products.Select(p => p.Count).ToList();