2
我有一個大的C#哈希集,我無法一次處理它。我需要提取具有給定大小的塊。我知道我可以遍歷散列並將每個元素複製到一個數組/列表中,以後可以處理,但是有沒有更快/更優雅的方法來處理?像一條線?切片一個C#-Hashset
public static IEnumerable<T[]> Slice<T>(this HashSet<T> h, int size)
{
if (0 >= size)
{
throw new Exception("0 or negative slice sizes are not accepted!");
}
if (null == h || 0 == h.Count)
{
yield return new T[0];
yield break;
}
if (size >= h.Count)
{
yield return h.ToArray();
yield break;
}
List<T> to_ret = new List<T>(size);
foreach (T elem in h)
{
if (size == to_ret.Count)
{
yield return to_ret.ToArray();
to_ret.Clear();
}
to_ret.Add(elem);
}
if (0 < to_ret.Count)
{
yield return to_ret.ToArray();
to_ret.Clear();
}
}
這就是我是如何做到的......我認爲有一個比這更優雅的方式。 :(
得到任何代碼樣本? – Carra
不要認爲這是相關的。我有一個HashSet以200.000的字符串,我需要處理它們。處理所有的200K一次是不是一種選擇。所以,我需要所有這些都在1k塊(讓我們說),並進行處理。我知道我可以寫我自己的方法,循環所有200k元素並將它們保存到1k緩衝區中,然後產生一個結果,但我的問題是,如果這可以用.net已經提供的東西來完成,與CopyTo類似。 –
dcg