[英]LINQ Select a List of List with DISTINCT
假设有一个类(和相应的数据库表),如下所示
class Price{
int ItemID;
int ItemTypeID;
string ItemName;
string ItemTypeName;
float Price;
}
我正在寻找一种通过LINQ查询它的新商品,以获取不同商品的列表(可能使用Take()和Skip()方法)并嵌套所有相关价格的列表。
有什么建议吗?
编辑:为了使问题更简单,这是一个示例
想象一下,有以下三个“价格”
1, 1, Ball, Blue, 10
1, 2, Ball, Red, 20
2, 1, Frisbee, Blue, 30
我想把它们简化
List<Item>
哪里
class Item
{
string ItemName;
string ItemTypeName;
List<Price> Prices;
}
和
class Price
{
float Price;
}
使用Distinct()
,如下所示:
var results = _dbContext.Prices
.Distinct()
.Skip(15)
.Take(5);
编辑:按照您的要求为每个商品的价格列表填充List<Item>
,您应该使用GROUPBY
像这样:
var results = _dbContext.GroupBy( i => new { i.ItemName, i.ItemTypeName })
.Select( g => new Item()
{
ItemName = g.Key.ItemName,
ItemTypeName = g.Key.ItemTypeName,
Prices = g.Select( p => new Price(){Price = p.Price})
});
之后,您可以Take
与第一个查询相同的方式应用“ Take
和“ Skip
”。
听起来好像您想要一个GroupBy。 尝试这样的事情。
var result = dbContext.Prices
.GroupBy(p => new {p.ItemName, p.ItemTypeName)
.Select(g => new Item
{
ItemName = g.Key.ItemName,
ItemTypeName = g.Key.ItemTypeName,
Prices = g.Select(p => new Price
{
Price = p.Price
}
).ToList()
})
.Skip(x)
.Take(y)
.ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.