【发布时间】:2021-05-01 02:05:12
【问题描述】:
我使用null 作为哨兵/行程值来突破 foreach:
public static DataTable ExecuteQuery(string sql)
{
var conn = new SqlConnection(EnvironmentVariables.GetDbConnectionString());
var adapter = new SqlDataAdapter(sql, conn);
var table = new DataTable();
adapter.Fill(table);
return table;
}
private VacantSummaryPage SelectPropertyFromDb(string sql)
{
VacantProperty vacantProperty = null;
List<VacantProperty> vacantProperties = GetProperties();
foreach (DataRow row in SqlServer.ExecuteQuery(sql).Rows)
{
vacantProperty = vacantProperties.Find(v => v.GetTitle().Contains(row["PartialStreetAddress"].ToString()));
if (vacantProperty != null) break;
}
vacantProperty.Select();
return new VacantSummaryPage(driver);
}
它的作用是,一旦 vacantProperty 匹配到它不再为空的位置,就跳出循环并 Select() 该属性。
【问题讨论】:
-
似乎您想
Select()第一个符合给定条件的项目。看起来很适合First()docs.microsoft.com/en-us/dotnet/api/… -
@CodeCaster 只是在探索其他方式。我不能问我不知道的事情,所以希望更有经验的开发人员能伸出援助之手。很高兴知道当前代码做了它应该做的事情,而您的回答实际上是一个客观的答案。最近,在 SO 中提问感觉就像把手伸进狮子的笼子里一样。 :)
-
@OlivierRogier 哈哈我也找到了! :) 非常感谢,它成功了!如果有人需要,我在原始帖子中添加了您的解决方案。如果此线程被重新打开,请再次发布,我将投票并接受。我给你这个模因作为我的感谢 - devhumor.com/media/thank-you-guys-you-are-the-real-heroes
-
@silver 没那么错,但不是真的。这是量子...
-
@OlivierRogier 今天我还学到的是 LINQ 理解查询。感谢您展示示例。
标签: c# loops refactoring sentinel null-check