从实体中的其他表获得最低价格

时间:2012-02-12 13:53:28

标签: c# asp.net-mvc entity-framework

我在这个网站上工作,我把所有可用的产品都放在一个页面上。每个产品都有自己的产品详细信息,颜色,尺寸,价格等。

我想显示此产品的最低可用价格。我使用带有产品列表的ViewModel,此刻我不知道如何获得这个特定产品的价格。它的产品详细信息也是一个列表。所以不知怎的,我应该得到它的ProductDetails的最低价格。

这是我的viewmodel:

var model = new ViewModelProductOverview()
        {
            Products = new ProductRepository().GetProductsAvailable(Id, Index, Size),
            Category = new CategoryRepository().Get(Id),
            CurrentPageID = page.HasValue ? page.Value : -1
        };

我的观点:

@{
            var i = 0;

            foreach (var product in Model.Products)
            {
                var position = "";
                switch (i)
                {
                    case 0: position = "first";
                        break;
                    case 1: position = "second";
                        break;
                    case 2: position = "third";
                        break;
                    default: i = 0; position = "first";
                        break;
                }

            <li class="@position"><a href="@Url.Action("Detail", "Product", new { productseourl = product.Name.ToSeoUrl(Sign.Minus), productid = product.ID })" >
            </a>
                <table>
                    <tr>
                        <td>
                            @product.Name @product.FabricType.Name
                        </td>
                        <td style="text-align: right;">
                            //Its lowest price need to come here
                        </td>
                    </tr>
                    <tr>
                        <td>
                            @product.SubCategory.Name
                        </td>
                        <td style="text-align: right;">
                            //Promotion price
                        </td>
                    </tr>
                </table>
            </li>
                i++;
            }
        }

1 个答案:

答案 0 :(得分:1)

基本上,

 var minPrice = allProducts.Details.Select(d => d.Price).Min();

 var cheapestDetail = allProducts.Details.OrderBy(d => d.Price).First();