C# foreach循环,其中顺序需要特定

C# foreach循环,其中顺序需要特定,c#,sorting,razor,foreach,element,C#,Sorting,Razor,Foreach,Element,我正在尝试遍历一系列装运方法,然后将它们作为选项设置在表中。问题是我的运输方式混乱,我们不想在数据库中重新安排。这意味着我需要遍历所有元素,但按照以下ShipMethodId的顺序:11、13、12 以下是代码片段: @foreach (var shippingMethod in availableShippingMethods) { bool chosen = false; if (choosenShippingMethod != null) { if

我正在尝试遍历一系列装运方法,然后将它们作为选项设置在表中。问题是我的运输方式混乱,我们不想在数据库中重新安排。这意味着我需要遍历所有元素,但按照以下ShipMethodId的顺序:11、13、12

以下是代码片段:

@foreach (var shippingMethod in availableShippingMethods)
{
    bool chosen = false;
    if (choosenShippingMethod != null)
    {
        if (choosenShippingMethod.Id == shippingMethod.Id)
        {
            chosen = true;
        }
    }
    else
    {
        chosen = counter == availableShippingMethods.Count();
    }
    <td>
        ... some html here ...
    </td>
}
@foreach(availableShippingMethods中的var shippingMethod)
{
布尔选择=假;
if(choosenShippingMethod!=null)
{
if(choosenShippingMethod.Id==shippingMethod.Id)
{
选择=正确;
}
}
其他的
{
selected=counter==availableShippingMethods.Count();
}
…这里有一些html。。。
}

在数据库表中创建一个名为
排序\u order
的列,从查询或视图中对该列进行排序,就完成了。灵活,可重复使用,检查


永远不要依赖永不改变的ID或其他奇怪的逻辑。您无法维护此类软件。

如果可用的ShippingMethods是页面接收到的模型,则在控制器级别更改它,添加属性顺序,您可以在其中设置元素的顺序,并在使用模型返回视图之前使用OrderBy对其进行排序。如果这可以正常工作,我不是100%,因为我只接触了
PHP
,我想您可以按照shipmethodID对数组进行排序。
availableShippingMethods.OrderBy(..)
?在
OrderBy
谓词中定义排序逻辑。如何定义排序逻辑?也就是说,当查看数据时,您如何知道它应该是什么顺序?是否有其他列可用于对元素进行排序?您想要使用的标准是什么?谢谢。是的,我通常不会这样做,但我们很快就会切换到一个新的平台,所以这一切都将被废弃。我将查看数据库中的一个新列。因此,如果您想在其他地方根据其他条件对表进行排序,您将添加一个
排序顺序2
列,然后添加一个
排序顺序3
列?Meh,在这之前,你应该考虑什么是你的排序标准,如果它可以用现有的列来解决…通常航运方法排序顺序取决于销售部门最大化他们的利润。我希望它要么在现有列上排序,比如name(仍然是一个可用的选项),要么人工排序(这解决了这个问题)。我不希望在这样的桌子上有更多的排序命令@Rafalon(这个解决方案比在视图或控制器的代码块中添加它要好。)那么,在代码隐藏中,您可以根据使用每个发货方法的销售数量订购它,它将自动更新,并且不需要额外的列,而且不需要额外的统计数据和数据库中的额外更新