0

所以这里的情况。我是 MVC 的新手,我正在寻找最简单的方法来迭代未知数量的一个模型,以根据来自另一个模型的数据不断寻找该模型的一个属性的最高整数值。

为了给你一个更好的想法,这里有一些背景:
我有一个应用程序设置允许用户选择 1、2、3 或 4。一旦选择了一个数字,应用程序必须搜索未知数量的模型其中 1、2、3、4 具有不同的整数值。模型一可能有 6、8、7、2,模型二可能有 9、7、6、3。我需要先读入 1、2、3 ,或来自第一个模型的 4,然后基于该选择(假设为 2)检查第 2 列的另一个模型的每个实例,以寻找最高值(在此示例中,来自第二个模型的第二个示例的 8)。

在此示例中,这是第一个确定要检查哪一列的模型:

public class Input
{
    public int ID { get; set; }
    public string Name { get; set; }
    public bool GreenCircle { get; set; }
    public bool BlueSquare { get; set; }
    public bool BlackDiamond { get; set; }
    public bool TerrainPark { get; set; }
}

这是第二个模型,其数量未知,因为我希望能够随时添加和删除度假村:

public class Resort
{
    public int ID { get; set; }
    public String Name { get; set; }
    public int BlackDiamond { get; set; }
    public int BlueSquare { get; set; }
    public int GreenCircle { get; set; }
    public int TerrainPark { get; set; }
}

因此,用户将选择 BlackDiamond,然后应用程序必须搜索每个度假村模型以在 BlackDiamond 属性中找到具有最高值的模型。

到目前为止,我的想法是拥有一个具有两个模型的 DBContext 的控制器,但我不知道如何正确迭代第二个模型的未知数量。有任何想法吗?

4

2 回答 2

1

类似于@Paul 的回答,但使用您的课程:

List<Resort> resorts = GetResortsFromDatabase();
if (input.BlackDiamond)
{
    return resorts.OrderByDescending(x => x.BlackDiamond).First();
}
else if (input.BlueSquare)
{
    return resorts.OrderByDescending(x => x.BlueSquare).First();
}
// etc...

如果您需要更复杂的逻辑,则可以使用foreach循环:

foreach(var resort in GetResortsFromDatabase())
{
    if (input.BlackDiamond && resort.BlackDiamond > 5) 
    {
        DoSomething(input, resort); // This will do something to the input and each resort.
    }
}

If you need help writing the GetResortsFromDatabase() function, then you need to ask a question like "How do I get multiple records from my database" and tell us how you're talking to the database. (Linq2Sql? Entity Framework? Something else?).

于 2013-01-18T17:47:04.370 回答
0

我相信其他人会做得更好,但这样的事情是否符合要求?

class MyModel
{
    public int[] PropertyValues = new int[4];
}

class Main
{
    IEnumerable<MyModel> models;

    public void MyFunc()
    {
        var models = new List<MyModel>();

        models.Add(new MyModel() { PropertyValues = new int[] { 6, 8, 7, 2 } });
        models.Add(new MyModel() { PropertyValues = new int[] { 9, 7, 6, 3 } });

        var index = 1;

        var maxValue = models.Max(m => m.PropertyValues[1]);
    }
}
于 2013-01-18T16:46:06.087 回答