您好我有一个二进制搜索方法来搜索特定记录。我会有一个索引位置。现在我想使用此索引位置通过使用lookup而不是Groupby从记录列表中获取组:
public static Data BinSearch(MyData searchDate)
{
IComparer<Data> rc = new RecComparer();
int index;
index = recordList.BinarySearch(searchDate, (IComparer<MyData>)rc);
Console.WriteLine(index);
int i = 1;
foreach (var r in recordList)
{
Console.WriteLine("Line:" + i + " " + r.DateDetails + " " + r.TrackDetails);
i++;
}
if (index >= 0)
{
// return recordList[index];
}
index = ~index;
if (index == 0 || index == recordList.Count)
{
// return null;
}
int newIndex = (((index-1)+index)/2)+1;
string pointer = recordList[newIndex].DateDetails;
我的指针正确显示。并指向我需要的正确索引。现在使用下面的代码行,我将使用lookup进入组:
var lookup = recordList.ToLookup(d => d.DateDetails);
如果我编写以下代码,现在问题就出现了:
var test = lookup.ElementAt(pointer);
foreach (var print in lookup.ElementAt(newIndex))
{Console.WriteLine("{0} {1}", print.Data1, print.Data2);
return (print);
}
}
它给了我一个异常的outOF范围,因为最初记录列表在记录列表中有180多条记录。现在通过查找它进行了分组,它在测试变量中变成了大约60条记录。所以这是一个例外。
我希望你理解我的问题。我如何让最后一部分工作,因为我希望返回一个带有查找的数据类型而不是groupby的Igrouping类型。
请帮忙。谢谢你