仅选择LINQ中的第一个对象
本文关键字:一个对象 选择 LINQ | 更新日期: 2024-10-20 20:13:42
基本上,我想将此代码用于LINQ:
private Tile CheckCollision(Tile[] tiles)
{
foreach (var tile in tiles)
{
if (tile.Rectangle.IntersectsWith(Rectangle))
{
return tile;
}
}
return null;
}
代码检查每个瓦片并返回与对象碰撞的第一个瓦片。我只想要第一个瓦片,而不是像使用那样的瓦片阵列
private Tile CheckCollision(Tile[] tiles)
{
var rtn =
from tile in tiles
where tile.Rectangle.IntersectsWith(Rectangle)
select tile;
}
我该怎么办?
您可以使用.First()
或.FirstOrDefault()
扩展方法来检索与特定条件匹配的第一个元素:
private Tile CheckCollision(Tile[] tiles)
{
return tiles.FirstOrDefault(t => t.Rectangle.IntersectsWith(Rectangle));
}
如果在数组中找不到符合所需条件的元素,.First()
扩展方法将引发异常。另一方面,.FirstOrDefault()
将静默地返回null。所以使用更适合你需求的。
请注意,您还可以使用.Single()
扩展方法。与.First()
的区别在于,如果有多个元素与条件匹配,.Single()
将抛出异常,而.First()
将返回第一个。