簡體   English   中英

LINQ使用DISTINCT選擇列表列表

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM