我正在考虑应用程序,它会在存储的IEnumerable上找到一些重复的模式。到目前为止我发现的是按顺序找到给定的子序列 - 这很容易。
我认为我需要的是:
目前我有两个想法可以调查更多,但我确信有一个现成的算法可以解决这个问题。
观
Dictionary<List<MyObject>, List <List<MyObject>> >
保持MyObject的关键首次出现,然后是下面的List
通过每次迭代扩展列表出现。然后呢
任何找到的模式的递归发现。答案 0 :(得分:0)
我不清楚你在问什么 - 你能举例说明你正在使用的对象和预期的结果吗?
以下是基于其中一个回复的示例...
考虑
class Person
{
public string Name;
}
你可以做到
var people = new List<Person>() { new Person() { Name="Joe" },
new Person() { Name="Jim" },
new Person() { Name="Jack" },
new Person() { Name="Joe" },
new Person() { Name="Jim" } };
var duplicateItems = from x in people
group x by x.Name into grouped
where grouped.Count() > 1
select grouped.Key;
在这种情况下,duplicateItems是一个字符串集合(Name):{“Joe”,“Jim”}
如果你正在寻找实际的Person对象,那么你可以做这样的事情(我想有一种更好的方法将它结合到上面):
var duplicatePeople = from x in people
where duplicateItems.Contains<string>(x.Name)
select x;
将返回Person对象的集合(两个Joe和两个Jim的)