繁体   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