我正在寻找一种简单快速的方法来检查我的所有 Listitems 是否具有相同的成员值。

foreach (Item item in MyList) 
{ 
    Item.MyMember = <like all other>; 
} 

编辑:
我忘记了一件事:如果这个成员之一(它是一个字符串)是 String.Empty 并且所有其他项目都具有相同的字符串,它也应该是真的!抱歉我忘了这个。

请您参考如下方法:

编辑:好的,在新的要求有

bool allSame = !MyList.Select(item => item.MyMember) 
                      .Where(x => !string.IsNullOrEmpty(x)) 
                      .Distinct() 
                      .Skip(1) 
                      .Any(); 

这避免了您必须先找到一个样本值才能开始的第一步。 (当然,它仍然会在找到第二个值后立即退出。)

它也只迭代一次序列,如果它不是一个真正可重复的序列,这可能很重要。如果是 List<T> 没问题当然。

编辑:消除对 Skip 的担忧,来自文档:

If source contains fewer than count elements, an empty IEnumerable<T> is returned. If count is less than or equal to zero, all elements of source are yielded.


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!