优化linq查询以增加



我有下面的linq查询搜索相同的数据表,并想知道是否有可能进行一次搜索,并执行下面的for循环将数据添加到相同的变量,以便它可以使系统更快。

var sort = configurationData.AsEnumerable().Where(sorts => sorts.Field<String>("QuestionStartText") == question &&
    sorts.Field<String>("slideNo") == Convert.ToString(slideNumber) )
             .Select(sorted => sorted.Field<String>("SortByColumn")).Distinct().AsParallel();
var rowNeedAfterSort = configurationData.AsEnumerable().Where(sorts => sorts.Field<String>("QuestionStartText") == question &&
    sorts.Field<String>("slideNo") == Convert.ToString(slideNumber))
                 .Select(sorted => sorted.Field<String>("NoOfRows")).Distinct().AsParallel();
var indexs = configurationData.AsEnumerable().Where(sorts => sorts.Field<String>("QuestionStartText") == question &&
    sorts.Field<String>("slideNo") == Convert.ToString(slideNumber))
                 .Select(sorted => sorted.Field<String>("ColumnInExcel")).Distinct().AsParallel();
int p = 0;
int chartValue = 0;
foreach (string inedcies in indexs)
{
    if (inedcies != null)
    {
        if (!inedcies.ToUpper().Equals("NULL"))
        {
            if (inedcies.Contains(','))
            {
                Array.Clear(valuesUsed, 0, valuesUsed.Length);
                string[] index = inedcies.Split(',');
                foreach (string a in index)
                {
                    valuesUsed[p] = Convert.ToInt32(a);
                    p++;
                }
            }
            else if (inedcies.Equals("7"))
            {
                Array.Clear(valuesUsed, 0, valuesUsed.Length);
                valuesUsed[p] = Convert.ToInt32(inedcies);
            }
            else
            {
                chartValue = Convert.ToInt32(inedcies);
            }
        }
    }
}
foreach (string sortedint in sort)
{
    if (sortedint != null)
    {
        if (!sortedint.ToUpper().Equals("NULL"))
        {
            SortData2(sortedint);
            sortedData = "true";
        }
    }
}
foreach (string rows in rowNeedAfterSort)
{
    if (rows != null)
    {
        if (!rows.ToUpper().Equals("NULL"))
        {
            string[] values = rows.Split(' ');
            rowCount = Convert.ToInt32(values[1]);
        }
    }
}

一旦您清理了下面的代码,您将能够看到如何/在哪里可以取出foreach循环。

   foreach (string a in index)
        {
            valuesUsed[p] = Convert.ToInt32(a);
            p++;
        }

我们对index.length < valuesUsed.length有什么保证?

Foreach (x in y)
{ 
if (x != null)
    {
     do something
    }
}

更具可读性。在foreach循环中也不需要检查元素是否为空。元素的属性可能需要检查,但不需要检查元素本身。

y.Foreach(x => do what you need here) 

相关内容

  • 没有找到相关文章

最新更新