[英]Lambda Expression. Return object that matches text
大家早上好,
这可能是周一忧郁的结果,但我无法理解这一点。 我试图返回一个与我们传入的文本匹配的对象。
public Dictionary<IWebElement, ReadOnlyCollection<IWebElement>> Cells;
public IWebElement FindCellByText(string pText)
{
return Cells.Select(m => m.Value).Select(m => m.FirstOrDefault<IWebElement>(e=> e.Text == pText));
}
错误:“System.Collections.Generic.IEnumerable”到“OpenQA.Selenium.IWebElement”。 存在显式转换(您是否缺少强制转换?)上面的代码试图获取单个单元格。 单元格分为行(作为键)和值(作为单元格)。
循环遍历每一行,并检查每个单元格以查找它是否与文本匹配并返回它。
任何帮助表示赞赏。
我会做类似的事情:
return Cells.Select(row => row.Value)
.SelectMany(q => q)
.FirstOrDefault(item => item.Text.Equals(pText));
Cells.Select(row => row.Value)
部分Cells.Select(row => row.Value)
了ReadOnlyCollection对象的集合( IEnumerable<IReadOnlyCollection<IWebElement>>
);
然后,您使用.SelectMany(q => q)
来展平集合,从而将其转换为IEnumerable<IWebElement>
。
继续,您应用.FirstOrDefault(item => item.Text.Equals(pText))
查询来提取满足条件的第一个元素(如果不存在则为 null)。
我希望它能帮助你。
您可以使用SelectMany
而不是Select
来获得预期的结果,如下面的代码:
public IWebElement FindCellByText(string pText)
{
return Cells.SelectMany(m => m.Value).FirstOrDefault(e => e.Text == pText);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.