我有一个字符串列表,并希望使用单行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。)
有什么想法吗?我真的很好奇,如果有一种简单的方法可以在我忽略的单行中完成这项工作。如果您不必编写扩展方法以使其工作,则可获得奖励积分。谢谢!
答案 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();