我有2个收藏集,其中一个可用功能,另一个是用户功能。我想删除其他集合中包含功能代码的可用功能中的项目,但找不到正确的语法。
我包含了当前无法编译的代码(它抱怨我不能使用“ ==”运算符,我的Linq知识很少)
Linq是执行此操作的最佳方法吗?任何帮助,将不胜感激。
AvailableFeatureViewListClass availableFeatures = (AvailableFeatureViewListClass)uxAvailableList.ItemsSource;
UserFeatureListClass userFeatures = (UserFeatureListClass)uxUserFeatureList.ItemsSource;
foreach (UserFeatureClass feature in userFeatures)
{
availableFeatures.Remove(availableFeatures.First(FeatureCode => FeatureCode == feature.FeatureCode));
}
最佳答案
将Except
方法与自定义Equals
或IEqualityComparer
实现一起用于您的类型(收集项的类型并不是很明显):
var features = availableFeatures.Except(userFeatures, new FeatureCodeComparer());
如果
availableFeatures
只是整数的集合,则可以执行以下操作:var features = availableFeatures.Except(userFeatures.Select(x => x.FeatureCode));
关于c# - 比较对象的两个集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1076144/