1

次のようなクラス(および対応するデータベーステーブル)があると想像してください

class Price{
    int ItemID;
    int ItemTypeID;
    string ItemName;
    string ItemTypeName;
    float Price;
}

個別のアイテムのリストを取得するために (おそらく Take() および Skip() メソッドを使用して)、LINQ を介してクエリを実行するために new を検索し、関連付けられているすべての価格のリストをネストしています。

なにか提案を?

編集:質問を簡単にするために、ここに例を示します

次のように 3 つの「価格」があると想像してください。

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;
}
4

2 に答える 2

5

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ますSkip

于 2012-07-02T13:16:08.187 に答える
5

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();
于 2012-07-02T13:33:42.507 に答える