[英]Using LINQ to get a distinct list of Parameters from a list of objects
所以我有報告列表,每個報告對象都有一個ParameterCollection
(繼承CollectionBase
),它包含該集合中的每個Parameter
。 我想在所有報告中獲得獨特的參數。
我已經通過循環遍歷列表中的每個報告,然后循環遍歷集合中的每個參數,添加到臨時列表然后使用.Distinct()
,我已經得到它工作更長(可能是低效)的方式但我認為有使用LINQ更好的方法,但我不能完全理解它。 嘗試了Select()
和SelectMany()
。
有什么想法嗎? 謝謝!
原始代碼
var reportParams = SelectedReports.ToDictionary(rpt => rpt.Name, rpt => rpt.Parameters);
var uniqueParams = new Dictionary<string, Parameter>();
foreach (var collection in reportParams.Values)
{
foreach (Parameter param in collection)
{
if (!uniqueParams.ContainsKey(param.Name))
uniqueParams.Add(param.Name, param);
}
}
var finalCollection = new ParameterCollection();
foreach (var param in uniqueParams.Values.Distinct())
{
finalCollection.Add(param);
}
return finalCollection;
var uniqueParams = reports.SelectMany(report => report.Parameters).Distinct();
編輯:
var uniqueParams = reports.SelectMany(report => report.Parameters.Cast<Parameter>()).Distinct();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.