簡體   English   中英

C#如何轉換/轉換IEnumerable <IGrouping<object, object> &gt;轉到另一種類型?

[英]C# How can I Cast/Convert a IEnumerable<IGrouping<object, object>> to another type?

因此,我正在嘗試轉換以下變量:

IEnumerable<IGrouping<object, object>> GroupedValues;

對此:

IEnumerable<IGrouping<int, int>> GroupedValues;

我試過使用Cast和

Convert.ChangeType(GroupedValues, typeof(int));

但是,如果我將其與IEnumerable<IGrouping<int, int>>變量進行比較,那么這似乎不是有效的轉換;

你可以這樣做

var result = GroupedValues.GroupBy(x => (int)x.Key, x => x.Cast<int>());

如果任何對象不是int則將引發異常。 因此您可以過濾以僅獲取像這樣的整數項。

var result = GroupedValues.Where(x => x.Key is int && x.All(i => i is int)).GroupBy(x => (int)x.Key, x => x.Cast<int>());

您不能轉換它,因為它不是協變的-您可以重新投影它(假設所有鍵和值都可以轉換為int ):

var q = GroupedValues.SelectMany(g => g.Select (gv => new {Key = (int)g.Key, Item = (int)gv}))
                     .GroupBy (g => g.Key, g => g.Item);

或更改初始查詢以區分鍵和項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM