0

これが状況です。私はMVCを初めて使用し、別のモデルからのデータに基づいて、そのモデルの1つのプロパティの最大の整数値を継続的に探すために、1つのモデルの未知数を繰り返し処理する最も簡単な方法を探しています.

より良いアイデアを提供するために、ここにいくつかの背景があります:
ユーザーが 1、2、3、または 4 を選択できるようにアプリケーションをセットアップしました。数値が選択されると、アプリケーションは不明な数のモデルを検索する必要があります。モデル 1 は 6、8、7、2 を持つ可能性があり、モデル 2 は 9、7、6、3 を持つ可能性があります。最初に 1、2、3 を読み込む必要があります。 、または最初のモデルから 4 を取得し、その選択 (2 としましょう) に基づいて、列 2 の他のモデルの各インスタンスを調べて、最大値を探します (この例では、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; }
}

これは、いつでもリゾートを追加および削除できるようにしたいため、数が不明な 2 番目のモデルです。

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 を持つコントローラーを用意することでしたが、2 番目のモデルの不明な数を適切に反復する方法がわかりません。何か案は?

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.
    }
}

関数の作成についてサポートが必要な場合はGetResortsFromDatabase()、「データベースから複数のレコードを取得するにはどうすればよいですか」などの質問をして、データベースとの通信方法を教えてください。(Linq2Sql?Entity Framework?何か他のもの?)。

于 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 に答える