使用LINQ比较C#中的List

时间:2013-06-18 07:45:07

标签: c# linq grasshopper

我正在Rhino Grasshopper中编写一个C#组件。我想确定列表constraints是否包含列表nodes中的Point3d对象。如果是,则与b中的条目对应的返回列表nodes中的条目应为true,否则为false。要确定对象是否相同,请使用比较容差tol

例如,让nodes = {A, B, C, D, E, F}constraints = {a, f}成为Point3d对象的列表。由于Aa之间的距离以及Ff之间的距离等于或小于tol

A.DistanceTo(a) <= tol  // True

我们会以b = {true, false, false, false, true}作为回报。

我想我可以用某种方式使用LINQ找到b

2 个答案:

答案 0 :(得分:5)

你似乎需要LINQ Select

var result = nodes.Select(n => constraints.Any(c => n.DistanceTo(c) <= tol));

答案 1 :(得分:1)

你的意思是这样的:

var b = from node in nodes
        let bs = constraints.Any(t => node.DistanceTo(t) <= tol)
        select bs;