C# Lambda表达式。返回与文本匹配的对象
大家早上好 这可能是周一情绪低落的结果,但我不能对此置之不理。我试图返回一个与我们传入的文本匹配的对象C# Lambda表达式。返回与文本匹配的对象,c#,selenium,lambda,C#,Selenium,Lambda,大家早上好 这可能是周一情绪低落的结果,但我不能对此置之不理。我试图返回一个与我们传入的文本匹配的对象 public Dictionary<IWebElement, ReadOnlyCollection<IWebElement>> Cells; public IWebElement FindCellByText(string pText) { return Cells.Select(m => m.Value).Select(m => m.FirstOr
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));
}
公共字典单元;
公共IWebElement FindCellByText(字符串pText)
{
返回单元格.Select(m=>m.Value).Select(m=>m.FirstOrDefault(e=>e.Text==pText));
}
错误:“System.Collections.Generic.IEnumerable”到“OpenQA.Selenium.IWebElement”。存在显式转换(是否缺少强制转换?)
上面的代码试图获取单个单元格。单元格分为行(键)和值(单元格)
循环遍历每一行,检查每一个单元格是否与文本匹配并返回
感谢您的帮助 您可以使用
SelectMany
而不是Select
来获得预期的结果,如以下代码:
public IWebElement FindCellByText(string pText)
{
return Cells.SelectMany(m => m.Value).FirstOrDefault(e => e.Text == pText);
}
我会做类似的事情:
return Cells.Select(row => row.Value)
.SelectMany(q => q)
.FirstOrDefault(item => item.Text.Equals(pText));
Cells.Select(row=>row.Value)
part投影一组只读集合对象(IEnumerable
)
然后,使用.SelectMany(q=>q)
将集合展平,从而将其转换为IEnumerable
接下来,应用.FirstOrDefault(item=>item.Text.Equals(pText))
查询来提取满足条件的第一个元素(如果不存在,则为null)
我希望它能帮助你