获取多个int参数的最大值



我有一个要读取的参数列表,需要获取它们的最大值。我说的不是List,而是几个int值:

int ColAssComm = Register.getImportExcelDSTV("AssComm")-1;
int ColAssDwg = Register.getImportExcelDSTV("AssDwg") - 1;
int ColAssGpe = Register.getImportExcelDSTV("AssGp") - 1;
int ColAssName = Register.getImportExcelDSTV("AssName") - 1;
int ColAssPrio = Register.getImportExcelDSTV("AssPrio") - 1;
int ColAssPds = Register.getImportExcelDSTV("AssPds") - 1;
int ColAssSurfPaint = Register.getImportExcelDSTV("AssSurfPaint") - 1;
int ColAssQty = Register.getImportExcelDSTV("AssQty") - 1;
int ColRepName = Register.getImportExcelDSTV("RepName") - 1;
int ColRepQty = Register.getImportExcelDSTV("RepQty") - 1;
int ColRepExecutionClass = Register.getImportExcelDSTV("RepExecutionClass") - 1;
int ColRepTreatment = Register.getImportExcelDSTV("RepTreatment");

我需要做一些类似的事情

int maxvalue = Max(ColAssComm,ColAssDwg..., ColRepTreatment)

有没有办法一次做完这一切?

另一个选项是创建一个通用方法,如下所示:

public T FindMax<T>(params T[] items)
{
return items.Max();
}

然后,你可以将动态数量的参数传递到该方法中,这样你就可以将示例中的所有变量传递到这个方法中,并返回你想要的任何类型的MAX,这可以适用于integersdoublesdecimals。。。等

根据@Idle_Mind的建议,您可以使用这样的字典:

using System.Collection.Generic;
string[] ParamNames =
{
"AssComm", "AssDwg", "AssGp", "AssName", "AssPrio", "AssPds",
"AssSurfPaint", "AssQty", "RepName", "RepQty", "RepExecutionClass", "RepTreatment"
};
Dictionary<string, int> ParamsData = new Dictionary<string, int>();

因此,我们定义了一个数组,该数组具有所需的参数名称列表。

接下来,我们定义一个字典,该字典将param的名称作为关键字,而不使用多个变量。

接下来,我们根据存储的值初始化字典。

foreach ( string paramName in ParamNames )
ParamsData.Add(paramName, Register.getImportExcelDSTV(paramName) - 1);

因此,我们有一种简单的方法来将我们需要的任何东西应用到集合上,比如Max

using System.Linq;
int max = ParamsData.Values.Max();

此外,我们可以使用访问参数

ParamsData["AssComm"] = 10;

我们当然可以定义字符串变量,使其不按字符串写入这些名称:

string ColAssCommName = "AssComm";
string ColAssDwgName = "AssDwg";
...

这样我们写:

string[] ParamNames = { ColAssCommName, ColAssDwgName ...}

和:

ParamsData[ColAssCommName] = 10;

为了保存,我们写了这样的东西:

foreach ( string paramName in ParamNames )
Register.setImportExcelDSTV(paramName, ParamsData[paramName] + 1);

最新更新