如何在多次迭代中保存DB中的元素?

时间:2017-02-15 06:30:06

标签: c# selenium selenium-webdriver

webElement中有315 allElement。我必须在我的数据库表上保存9个元素。我怎么能这样做? 我试过了

for (var i = 0; i<=find; i++)
{
    IList<IWebElement> allElement = driver.FindElements(By.XPath("//table[@class='TableText1'][2]/tbody/tr/td[contains(@class, 'Table_List') or contains(@class, 'Table_List_diff')]"));

    for (int j = 0; j < allElement.Count; j=j+9)
    {
        var list1 = allElement.Take(j+9).ToArray();
        try
        {
            var text = new access_event_logs();
            text.USERID = list1[0].Text;
            text.DEPARTMENT = list1[3].Text;
            text.LOCAL_TIMESTAMP = Convert.ToDateTime(list1[4].Text);
            text.EVENTID = list1[5].Text;
            text.TERMINALSN = list1[6].Text;
            text.PhotoPath = list1[7].Text;
            text.REMARKS = list1[8].Text;
            text.ACCESSMETHOD = "fp";
            text.TERMINALIP = "09898";
            text.PHOTO = null;
            text.PHOTOSIZE = 0;
            text.RECLOGFROMIP = "";

            db.access_event_logs.Add(text);
            db.SaveChanges();
        }    
    }

我只能保存前9个元素[0]到[8] ..如何保存所有315元素? 我有个主意。首先保存9个元素,然后从列表中删除这些元素。但我无法做到这一点。

1 个答案:

答案 0 :(得分:0)

来自MSDN

中的Take()个文档
  

IEnumerable,包含输入序列开头的指定数量的元素。

allElement.Take(j+9)中,您始终从列表的开头开始。由于您始终从返回的列表中获取前9个元素,因此它将始终为您提供相同的元素。请尝试使用GetRange

var list1 = allElement.GetRange(j, 9).ToArray();

请注意GetRande()仅在IList上的List工作。将IList<IWebElement> allElement更改为List<IWebElement> allElement