簡體   English   中英

使用LINQ從對象列表中獲取不同的參數列表

[英]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.

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