是否可以在列表中存储计算字段?

时间:2017-10-17 13:26:06

标签: c# list asp.net-core-mvc

我一直在寻找相关信息,但我似乎无法找到合适的信息。

有什么方法我可以调用我的方法将其保存在列表中吗? 我试过循环列表,但它不起作用。

比如说我想调用这个方法并将它存储在List中,每次使用qsnID ++时它都是一个新的Model.Test

public static double FindAvgScore(double[,] testArray)
    {
        int k = 2;

        double max = FindMax(testArray);
        double min = FindMin(testArray);
        double midPoint = (max - min) / k;
        double avg = min + midPoint;

        return avg;
    }

我在下面的代码是硬编码的,用于测试数据的传递。 最后,我想将计算字段存储为List中的FindAvgScore方法的返回值。

  List<Model.Test> lstItems = new List<Model.Test>()
                {
                    new Model.Test() { qsnID =1011, binOne =100 },
                    new Model.Test() { qsnID =1012, binOne =20 }

                };

然后将List传递给POST方法,我在其中使用javascript将其显示在表格上。硬编码值可以连续显示。

另外,如何在表格中显示整数数组?

先谢谢你了!

1 个答案:

答案 0 :(得分:1)

我将假设您正在尝试将List<Model.Test>传递给某种视图,并且您希望将最大值,最小值,中点和平均值传递给视图。

我建议您创建一个包装所有数据的新对象(下面称为List<T>),而不是尝试将其存储在ViewModel中。

public class ViewModel
{
    public List<Model.Test> Items { get; set; }
    public double Max => FindMax(this.Items);
    public double Min => FindMin(this.Items);
    public double MidPoint => (this.Max / this.Min) / 2;
    public double Average => this.Min + this.MidPoint;
}

使用此ViewModel类,您可以将Min / Max / MidPoint / Average的计算抽象为关注它的类。

更多关于它如何在ASP.NET MVC中起作用的说明。

模型Test.cs

public class Test
{
    public int qsnId { get; set; }
    public int binOne { get; set; }
    // Other properties related to the object
}

ViewModel ViewModel.cs

public class ViewModel
{
    public List<Model.Test> Items { get; set; }
    public double Max => FindMax(this.Items);
    public double Min => FindMin(this.Items);
    public double MidPoint => (this.Max / this.Min) / 2;
    public double Average => this.Min + this.MidPoint;
}

控制器HomeController.cs

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var vm = new ViewModel();
        vm.Items = GetItems(); // This retrieves the items from wherever you get them from

        return new View(vm);
    }
}

查看Index.cshtml

@model ViewModel

<h2>Index View</h2>

<ul>
    <li>Max: @Model.Max</li>
    <li>Min: @Model.Min</li>
    <li>MidPoint: @Model.MidPoint</li>
    <li>Average: @Model.Average</li>
</ul>

<table>
    <thead>
        <tr>
            <th>QSN Id</th>
            <th>Bin One</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model.Items)
        {
            <tr>
                <td>@item.qsnId</td>
                <td>@item.binOne</td>
            </tr>
        }
    </tbody>
</table>

请原谅我,如果其中任何一个不能编译,它都是从内存中输入的。这应该可以帮助你!