Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查找矩形内的线(LINQ)_C#_Linq - Fatal编程技术网

C# 查找矩形内的线(LINQ)

C# 查找矩形内的线(LINQ),c#,linq,C#,Linq,我有两个直线和矩形的列表。我需要做的是从列表中删除“在多个矩形内”的所有行。我知道如何使用循环。我正在寻找一个在C#中使用Linq的优雅解决方案。可能吗 我正在使用Rectangle.HitTest(第l行)检查该行是否位于矩形内。如果您已经有列表和IEnumerable,可以使用以下方法: 列表行=。。。 IEnumerable矩形=。。。 RemoveAll(x=>rectangles.Where(r=>r.HitTest(x)).Skip(1.Any()); Wha?不确定你在问什么?然后

我有两个直线和矩形的列表。我需要做的是从列表中删除“在多个矩形内”的所有行。我知道如何使用循环。我正在寻找一个在C#中使用Linq的优雅解决方案。可能吗

我正在使用Rectangle.HitTest(第l行)检查该行是否位于矩形内。

如果您已经有
列表和
IEnumerable
,可以使用以下方法:

列表行=。。。
IEnumerable矩形=。。。
RemoveAll(x=>rectangles.Where(r=>r.HitTest(x)).Skip(1.Any());

Wha?不确定你在问什么?然后用循环显示你的代码,这样我们就可以避免重复的工作。循环的大部分可能的事情也可以用lambdas以函数的方式完成。这是否更优雅是另一个问题。我更喜欢你的问题,而不是我将要建议的问题。Skip还删除了仅在一个矩形内的行。@user225047不应该这样。
Skip
应该忽略一个矩形,如果之后还有更多矩形,
Any
将导致其从列表中退出<代码>跳过(1)。Any()
相当于
Count()>1
,但在2之后停止计算Count。我可以将它与列表一起使用,而不是与您的语句一起使用IEnumerable吗?@user225047是的,
IEnumerable
是一个接口,因此可以使用实现该接口的任何东西<代码>列表实现了
IEnumerable
(与
Rectange[]
和许多其他类一样)。
List<Line> lines = ...
IEnumerable<Rectange> rectangles = ...
lines.RemoveAll(x => rectangles.Where(r => r.HitTest(x)).Skip(1).Any());