[英]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.