我有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));
}
Run Code Online (Sandbox Code Playgroud)
对您的类型使用Except自定义Equals或IEqualityComparer实现的方法(您的集合项的类型不是很明显):
var features = availableFeatures.Except(userFeatures, new FeatureCodeComparer());
Run Code Online (Sandbox Code Playgroud)
如果availableFeatures它只是一个整数集合,你只需执行以下操作:
var features = availableFeatures.Except(userFeatures.Select(x => x.FeatureCode));
Run Code Online (Sandbox Code Playgroud)