我有以下查询,但它有2个foreach循环,我认为不好。如何从IEnumerable>中获得不同的价值?使用linq。
以下是我写的代码,
var floatingIds= subInfo.Ranges.Select(c => c.RangeIDs.Select(s=>s)).Distinct();
var floatIds= new List<Guid>();
foreach (var ids in floatingIds)
foreach (var id in ids)
{
if (!floatIds.Contains(id))
{
floatIds.Add(id);
}
}
我有这篇文章,但仍未获得预期的值,但上面的代码提供了正确的ID How do I avoid using nested foreach statements by using lambda or linq in this scenario?
答案 0 :(得分:1)
您可以使用SelectMany
展平集合并获取所有不同的值而不使用任何foreach
:
var floatIds = subInfo.Ranges
.SelectMany(c => c.RangeIDs.Select(s=>s))
.Distinct()
.ToList();
答案 1 :(得分:-1)
var floatIds = subInfo.Ranges
.SelectMany(c => c.RangeIDs.Select(s=>s))
.Distinct()
.ToList();