所以我有報告列表,並且每個報告對象都有一個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