给出一个列表列表(假设有5个列表,要有一个可以工作的实际编号),我可以相对容易地找到所有5个列表共有的项目(请参阅Intersection of multiple lists with IEnumerable.Intersect()),使用下面的代码的变化:大多数列表共有的项目
var list1 = new List<int>() { 1, 2, 3 };
var list2 = new List<int>() { 2, 3, 4 };
var list3 = new List<int>() { 3, 4, 5 };
var listOfLists = new List<List<int>>() { list1, list2, list3 };
var intersection = listOfLists.Aggregate((previousList, nextList) => previousList.Intersect(nextList).ToList());
现在,让我们说,intersection
结束了包含0项。很有可能有一些4/5列表共有的对象。我将如何去寻找最有效的方式?
我知道我可以通过4列表的所有组合并保存所有结果,但该方法不能很好地扩展(这最终必须在约40个列表中完成)。
如果没有项目与4个列表共同,那么搜索将重复查找3/5列表的共同项目等。从视觉上来看,这可以由网格点列表表示,并且我们正在搜索点最重叠的部分。
任何想法?
编辑: 也许最好是看看每个点,并跟踪它出现在每个列表中的次数,然后创建一个发生率最高的点列表?
很确定你刚刚回答了你自己的问题。 – RoadieRich
你在每个列表中有独特的项目吗? –
实际列表是'Point'列表(在WPF画布上使用) –