C# 相同条件下的多个值

C# 相同条件下的多个值,c#,optimization,C#,Optimization,有没有其他方法可以优化下面的代码?我觉得下面的代码对于它执行的操作来说是巨大的 if ((currentElement == null || (firstGridRow["Low"].ToString() == string.Empty || firstGridRow["High"].ToString() == string.Empty || firstGridRow["Mean"].ToString() == string.Empty || firstGrid

有没有其他方法可以优化下面的代码?我觉得下面的代码对于它执行的操作来说是巨大的

if ((currentElement == null ||
    (firstGridRow["Low"].ToString() == string.Empty || 
    firstGridRow["High"].ToString() == string.Empty ||
    firstGridRow["Mean"].ToString() == string.Empty ||
    firstGridRow["StdDev"].ToString() == string.Empty)))
{
    continue;
}

if (newRow.Length != 0)
{
    AddColorList(currentElement, opid, currentLow, "Low", newRow, listCollectionLow);
    AddColorList(currentElement, opid, currentHigh, "High", newRow, listCollectionHigh);
    AddColorList(currentElement, opid, currentMean, "Mean", newRow, listCollectionMean);
    AddColorList(currentElement, opid, currentStdDev, "StdDev", newRow, listCollectionStdDev);
} 

您可以使用LINQ,如下所示:

private static readonly string[] AllKeys = new[] {"Low", "High", "Mean", "StdDev"};


if (currentElement == null || ALlKeys.Any(k => gridRow[k].ToString() == string.Empty)) {
     ...
}
if (newRow.Length != 0) {
    foreach (var key in AllKeys) {
        AddColorList(currentElement, opid, currentLow, key, newRow, listCollectionLow);
    }
}

你应该问这个!!第一排是什么?循环是什么样子的?为什么每次循环迭代都要检查
firstGridRow[“Low”]
和其他列,即使它们总是同一行?@huMptyduMpty:在那边问这个问题。但很长一段时间没有回应。所以在这里问。@RanjithKumarGovarthanan:您可以使用string.IsNullOrEmpty(gridRow[key])here@Tobias对的但是,
string
从来都不是
null
,所以我不确定这在这里是否有用。它在哪里说
string
从来都不是
null
?@Tobias它来自
ToString()
。尽管指南没有禁止
ToString()
返回
null
,但实际上它从来没有这样做。如果gridRow[key]为null,您将得到一个异常,因为不能对null对象调用ToString()。ToString()不会返回null,这是真的,但在null对象上调用它肯定会引发异常。