首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lambda表情。与文本匹配的返回对象

Lambda表情。与文本匹配的返回对象
EN

Stack Overflow用户
提问于 2020-01-27 17:59:30
回答 2查看 346关注 0票数 1

大家早上好,

这可能是星期一的忧郁的结果,但我不能把我的头围绕在这上面。我试图返回一个与我们传入的文本匹配的对象。

代码语言:javascript
复制
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”。存在显式转换(是否缺少强制转换?)上面的代码试图获取一个单元格。单元格分为行(键)和值(单元格)。

循环遍历每一行,并检查每个单元格是否与文本匹配并返回。

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-27 18:41:18

我会做一些类似的事情:

代码语言:javascript
复制
return Cells.Select(row => row.Value)
            .SelectMany(q => q)
            .FirstOrDefault(item => item.Text.Equals(pText));

Cells.Select(row => row.Value)部件投影一个ReadOnlyCollection对象集合(IEnumerable<IReadOnlyCollection<IWebElement>>);

然后,使用.SelectMany(q => q)将集合扁平化,从而将其转换为IEnumerable<IWebElement>

接下来,应用.FirstOrDefault(item => item.Text.Equals(pText))查询提取满足条件的第一个元素(如果不存在则为null )。

我希望它能帮到你。

票数 1
EN

Stack Overflow用户

发布于 2020-01-27 18:09:06

您可以使用SelectMany而不是Select来获得预期的结果,如下所示:

代码语言:javascript
复制
public IWebElement FindCellByText(string pText)
{
    return Cells.SelectMany(m => m.Value).FirstOrDefault(e => e.Text == pText);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59936506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档