我喜歡將列表拆分爲多個列表,列表包含GUID。例如,如果主列表包含130個GUID,我將閾值保持爲50,所以它應該返回,3個列表,第一個和第二個列表應包含50個列表,第三個列表將包含30個GUID。將列表分割到C#中的子列表中
我們該怎麼做?請幫助我!
我喜歡將列表拆分爲多個列表,列表包含GUID。例如,如果主列表包含130個GUID,我將閾值保持爲50,所以它應該返回,3個列表,第一個和第二個列表應包含50個列表,第三個列表將包含30個GUID。將列表分割到C#中的子列表中
我們該怎麼做?請幫助我!
您可以使用下面的LINQ查詢:
// your sample list
List<Guid> guids = Enumerable.Range(0, 130).Select(i => Guid.NewGuid()).ToList();
List<List<Guid>> splitted = guids
.Select((guid, index) => new { guid, index })
.GroupBy(x => x.index/50)
.Select(g => g.Select(x => x.guid).ToList())
.ToList();
的基本方法是Enumerable.GroupBy
這組由它們的索引/ 50,因爲整數除法截斷你的50
感謝蒂姆,它的工作,讚賞,但另一種方法是,它可能會有所幫助,使用MoreLinq ... IEnumerable
您可以在組小數部分使用MoreLinq
寫喬恩斯基特: google code(可上的NuGet)
你正在尋找的方法是Batch
:
using MoreLinq
...
IEnumerable<IEnumerable<Guid>> result = enumerableGuids.Batch(50);
嗨,這是一個完美的使用方式,我已經通過Nuget下載了MoreLinq,它的功能就像一個魅力!謝謝,謝謝.. – mariapradeep
您可以使用此代碼。在這裏我使用字符串進行演示,你可以使用你的。
var list = new List<string> { "a", "b", "c", "d", "e" };
var threashold = 2;
var total = list.Count();
var taken = 0;
var sublists = new List<List<string>>(); //your final result
while (taken < total)
{
var sublst = list.Skip(taken)
.Take(taken + threashold > total ? total - taken : threashold)
.ToList();
taken += threashold;
sublists.Add(sublst);
}
謝謝Arghya,另一種方法是使用MoreLinq ... IEnumerable
我強烈建議您在發佈問題之前先搜索網站。這個問題的相關問題列表顯示了很多重複。 –