列表中的唯一或Linq中的null?

时间:2013-10-09 21:40:33

标签: linq

我有一个字符串列表,并希望使用单行Linq来返回列表的唯一值(如果有的话)或null,否则。换句话说:

 ["a","a","a","a","a"] returns "a"
 ["a"] returns "a"

 ["a","a","a","a","b"] returns null
 ["a","b","c"] returns null
 [] returns null

我假设我会使用IEnumerable.Distinct()将列表折叠为其唯一值,但我不知道如何执行“single或null”(如果有多个项目,SingleOrDefault()会抛出异常; FirstOrDefault()将始终返回第一个项目,如果有两个或更多我想要的话,则不会返回null。)

有什么想法吗?我真的很好奇,如果有一种简单的方法可以在我忽略的单行中完成这项工作。如果您不必编写扩展方法以使其工作,则可获得奖励积分。谢谢!

2 个答案:

答案 0 :(得分:3)

col.Distinct().Count() == 1? col.First() : null;

答案 1 :(得分:1)

这会吗?

 col.Distinct().Count() > 1 ? null : col.Distinct().First();

更新以处理空集合

 col.Count() == 0 ? null : col.Distinct().Count() > 1 ? null : col.Distinct().First();