以下代码按预期工作但我想转换下面的代码使用Linq? 有什么建议吗?
string[] selections = "Men,Women,Boys".Split(',');
int _chkboxId = 0;
int _chkboxTextId = 1;
try
{
string id = "lstchk_" + _chkboxId;
while (!driver.FindElement(By.Id(id)).Equals(null))
{
string checkboxId = String.Format("lstchk{0}", _chkboxTextId);
string checkboxName = driver.FindElement(By.Id(checkboxId)).Text;
foreach (string match in selections)
{
if (checkboxName == match.Trim())
{
//matched... do more work here...
}
}
}
答案 0 :(得分:5)
foreach (string match in selections.Where(match => checkboxName == match.Trim()))
{
//matched... do more work here...
}
答案 1 :(得分:1)
switch(checkboxName) {
case "Men":
case "Women":
case "Boys":
// do more work here
default:
// no match, bail
}
有时,编写代码的方式不同。
答案 2 :(得分:1)
如果您的selections
列表仅包含不同的值,则可以使用
if(selections.Any(match=>match.Trim().Equals(checkboxName)))
{
//Do work
}
而不是你的循环。如果您的列表可能包含非不同的值,则相同,但每个checkboxName
只应执行一次工作
答案 3 :(得分:0)
您如何将这个简单的foreach转换为linq语句?
public List<string> GetItems()
{
var items = new List<string>();
foreach (Ranorex.ListItem item in ranorexComboBox.Items)
{
items.Add(item.Text);
}
return items;
}