我有一个电影列表,我需要将它们与另一个列表合并并重复。
我正在使用乔恩·斯基特(Jon Skeet)的DistinctBy(m => m.SomeUniqueMovieProperty)
来实现此目的,并且效果很好。除此以外,我们很快发现,有时10%至20%的电影(在任一列表中)都没有填写此属性,从而导致DistinctBy
将其折叠成1部幸运电影。
这是一个问题,我们希望保留所有没有此属性值的电影。最初,我想到了从每个集合中提取这些电影,然后进行复制,然后再次合并,是否有解决此问题的较短方法?
最佳答案
将DistinctBy()
的结果与Where([null or empty]).
的结果连接在一起
var nullMovies = allMovies.Where(m=>string.IsNullOrEmpty(m.SomeUniqueMovieProperty));
var distinctNonNullMovies = allMovies.Where(m => !string.IsNullOrEmpty(m.SomeUniqueMovieProperty)).DistinctBy(m => m.SomeUniqueMovieProperty);
var result = nullMovies.Concat(distinctNonNullMovies);
关于c# - DistinctBy,但忽略null/empty,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37930751/