所以我有报告列表,并且每个报告对象都有一个ParameterCollection
(它继承了CollectionBase
),其中包含该集合中的每个Parameter
。我想获得所有报告中的独特参数。使用LINQ从对象列表中获取一个不同的参数列表
我已经通过循环遍历列表中的每个报告,然后遍历集合中的每个参数,添加到一个临时列表,然后使用.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;
分享您的代码首先要更好地了解你会得到什么,什么可以优化 – dariogriffo 2014-10-28 15:59:52
什么是报告的类型?您是否使用DevExpress报告? – Habib 2014-10-28 16:00:21
@Habib添加到问题,谢谢 – Hershizer33 2014-10-28 16:05:56