我有一个如下定义的类
public class ResultClass()
{
public HashSet<string> VerifiedResults { get; private set; }
public HashSet<string> UnverifiedResults { get; private set; }
bool IsBlocked {get; private set; }
}
如果我有一个包含ResultClass项的列表,例如List<ResultClass>()
,我如何使用linq将结果合并到一个ResultClass对象中。基本上,我想知道是否有更好的方法使用linq完成以下操作。
var finalResult = new ResultClass();
foreach(var item in listOfResultClass)
{
finalResult.VerifiedResults.Union(item.VerifiedResults);
finalResult.UnverifiedResults.Union(item.UnverifiedResults);
finalResult.IsBlocked = item.IsBlocked;
}
2条答案
按热度按时间xzv2uavs1#
这可以使用LINQ Aggregate function实现,如以下示例所示:
}
几点意见:
ResultClass
,以消除编译器错误,并使其可以轻松地初始化它们的列表。'IsBlocked
属性,我使用了所有单个IsBlocked
属性的逻辑OR。UnionWith
而不是Union
。ResultClass
示例中(“verified”和“unverified”属性中),考虑可能的冲突可能是个好主意。可能需要调整累加器lambda表达式以获得所需的结果。7rtdyuoh2#
正如@iSR5提到的,您可以使用
SelectMany
,我不确定您计划如何分配IsBlocked
,但这似乎与您的代码的行为相同:另外,请阅读@Johan Donne的评论。