-2

以下のコードは期待どおりに動作していますが、Linq を使用してコードを改善する方法はあるのでしょうか?

私がしているのは、rows[5] と rows[6] に値があるかどうかを確認することです。

for (int i = 0; i < nameList.Count; i++)
{
     IList<IWebElement> rows = driver.FindElements(By.CssSelector("itd_1"));
     for (int k = 0; k < rows.Count; k++)
     {
        if (rows[5].Text != " " && rows[6].Text != " ")
        {
           if (!string.IsNullOrEmpty(rows[5].Text) || 
               !string.IsNullOrWhiteSpace(rows[5].Text) && 
               !string.IsNullOrEmpty(rows[6].Text) || 
               !string.IsNullOrWhiteSpace(rows[6].Text))
           {
              //do something here...
           }
        }
    }
 }
4

3 に答える 3

2
var result = rows.Where(x => !string.IsNullOrWhitespace(x[5]) && !string.IsNullOrWhitespace(x[6]));

これIEnumerableにより、必要な結果が得られます。

于 2013-06-12T18:50:12.763 に答える
0

これは、冗長な部分を削除しただけで、上記とまったく同じことを行います。//do something here..ブロックが行の値を変更していないと仮定します。

for (int i = 0; i < nameList.Count; i++)
{
     IList<IWebElement> rows = driver.FindElements(By.CssSelector("itd_1"));
     if (!string.IsNullOrWhiteSpace(rows[5]) && !string.IsNullOrWhiteSpace(rows[6]))
     {
        for (int k = 0; k < rows.Count; k++)
        {
              //do something here...
        }
    }
}
于 2013-06-12T19:52:03.503 に答える
0

上記を試してください

   rows.Where(x => x[5].Text != " " && x[6].Text  != " ")
            .Where(x=> !string.IsNullOrEmpty(x[5].Text ) || !string.IsNullOrWhiteSpace(x[5].Text )
                && !string.IsNullOrEmpty(x[6].Text ) || !string.IsNullOrWhiteSpace(x[6].Text ));
于 2013-06-12T18:45:18.180 に答える