我尝试将以下循环更改为LINQ表达式失败:
int index = 0;
IList<IWebElement> divNota = new List<IWebElement>();
foreach (IWebElement element in tablaNotas)
{
divNota.Add(element.FindElement(By.Id("accion-1-celda-0-" + index + "-0")));
index++;
}
我尝试使用
IList <IWebElement> divNota = tablaNotas.Select(element => element.FindElement(By.Id("accion-1-celda-0-"+ tablaNotas.IndexOf(element) + "-0"))).ToList();
但是tablaNotas.IndexOf(element)
总是返回-1
,这意味着在element
中找不到tablaNotas
。
字符串"accion-1-celda-0-"+ tablaNotas.IndexOf(element) + "-0"
用于更改为
"accion-1-celda-0-"+ 1 + "-0"
"accion-1-celda-0-"+ 2 + "-0"
"accion-1-celda-0-"+ 3 + "-0"
...
"accion-1-celda-0-"+ n + "-0"
根据元素的索引
感谢您的帮助
答案 0 :(得分:4)
var result = tableNotas
.Select((element, index) => element.FindElement(By.Id("accion-1-celda-0-" + index + "-0")))
.ToList();
答案 1 :(得分:3)
使用此:
var divNota =
tablaNotas.Select((element, index) =>
element.FindElement(By.Id($"accion-1-celda-0-{index}-0")))
.ToList();
答案 2 :(得分:3)
在Linq
中,一些保留字,例如Where
,FirstOrDefault
为查询创建条件,而Select
保留字可以创建您想要的对象{{1 }}方法将方法应用于元素。这是修改集合(例如数组)中的元素的一种优雅方法。此方法将匿名函数(通常指定为lambda表达式)作为参数接收。
示例:让我们看一个将Select扩展方法应用于字符串数组的程序。分配数组类型的局部变量,并使用三个字符串文字。我们在此数组引用上使用Select。
基本方法在这里:
Select
现在!对于您搜索的该问题,可以使用以下代码:
public static System.Collections.Generic.IEnumerable<TResult> Select<TSource,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,int,TResult> selector);
在var divNotaResult = list
.Select((data, index) => data.FindElement(By.Id("accion-1-celda-0-" + index + "-0")))
.ToList();
方法中,与Select
类似,我们必须在foreach
数据和索引中拖曳对象。
function
具有循环的每个数据,而data
具有循环的计数。