gpt4 book ai didi

c# - 各取一个

转载 作者:太空狗 更新时间:2023-10-29 19:53:00 26 4
gpt4 key购买 nike

目标

获取 foreach 返回的每个结果之一.

场景

看看下面的 Razor 代码片段:

@foreach (var product in Model.Collection.Products)
{
<p>@product.name</p>
}

返回给客户端的是:

Xbox 360

Xbox 360

Xbox 360

Xbox 360

Playstation 3

Playstation 3

Playstation 3

现在,让我解释一下:我的应用程序比较不同商店的产品价格。就我而言,有四家商店有 Xbox 360,而 Playstation 3 有三家商店——这就是它们的名字重复的原因。

我想要的很简单:一次获取每个产品的名称来填充 HTML 的表格列——你们都能理解吗?

理念

每个产品都添加到 session 中。在我们的例子中, session 中有两个产品——第一个是 Xbox 360第二个是Playstation 3 .所以,正如您所看到的,我可以使用 Session 来处理这个(“对于 Session 上的每个项目,做一些事情...”),但我认为这不是必需的,因为我总是会必须在数据库上运行查询,并且根据逻辑,它会返回我需要的东西。换句话说,除了临时存储用户需要的内容外,我不需要使用 Session。

聚光灯

Model.Collection.Products类型为 List<Products> .

我尝试了什么?

像这样:

@foreach (var product in Model.Collection.Products.FirstOrDefault())
{
[...]
}

但是,当然,不成功。基本上我需要类似 FirstOfEach() 的东西.

最佳答案

解决方案

使用 GroupBy ...

@foreach (var group in Model.Collection.Products.GroupBy(x => x.name))
{
<p>@group.Key</p>
}

A GroupBy将返回 IEnumerable<IGrouping<TKey, TSource>> Key在哪里property 表示您分组所依据的属性的值(在本例中为:name)


其他好处

这种方法的好处是您还可以访问每个组的项目,因此如果您想列出每个组的不同价格,例如,您可以这样做:

@foreach (var group in Model.Collection.Products.GroupBy(x => x.name))
{
<p>Product: @group.Key (@group.Count() items)</p>
<p>Prices:
@foreach(var item in group)
{
<span>@item.price</span>
}
</p>
}

(我知道这不是最好的 HTML,它只是一个用法示例!)

关于c# - 各取一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18083392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com