[英]C# LINQ get first list items of a dictionary<string, List<object>>
我有一個列表字典,我想獲取字典中每個列表的第一個元素的列表。 基本上:
Dictionary<string, List<object>> dico = new Dictionary<string, List<Object>>();
// fill data...
List<object> list = new List<Object>();
foreach(var value in dico.Values)
{
list.Add(value.ElementAt(0));
}
可以用LINQ完成。
非常感謝。
Dictionary
實現IEnumerable<KeyValuePair>
因此您可以將每個值投影到所需的值,然后轉換為列表:
var list = dico.Select(p => p.Value[0]).ToList();
如果您擔心List
為空或缺少( null
)列表,則可以保護投影:
var list = dico.Select(p => p.Value?.FirstOrDefault()).ToList();
PS我以為ElementAtOrDefault
是List
的方法,或者至少對List
有特殊情況,但事實並非如此。 我想知道為什么.Net使用類型轉換來檢查List
而不是在已知靜態類型時使用特殊情況:
public static T ElementAtOrDefault<T>(this List<T> src, int index) => src.Count > index ? src[index] : default(T);
快速測試表明擴展方法在List
上快20倍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.