我想从字符串集合中选择一些值,我使用LINQ编写一个值,使用foreach
语句编写一个。
使用foreach
版本,我会得到大约300个条目的列表。
List<string> res = new List<String>();
foreach (var l in anchors)
{
if (l.Attributes["href"] != null)
{
res.Add(l.Attributes["href"].Value);
}
}
使用LINQ版本,我得到null
:
IEnumerable<string> res2 = anchors.Select(l => l?.Attributes["href"]?.Value);
答案 0 :(得分:3)
使用linq,您也可以获取空值并将其添加到您的枚举中。它与你的foreach不完全相同。将其更改为:
IList<string> res2 = anchors.Where(l=>l.Attributes["href"] != null).Select(l => l.Attributes["href"].Value).ToList();
答案 1 :(得分:1)
.? syntax如果应用的项目返回null
,则返回null
。在这种情况下,null
会添加到输出中。
使用支票if (l.Attributes["href"] != null)
,它不会添加到输出中。
要在LINQ中模仿,请添加Where
子句。