【问题标题】:Unique from list or null in Linq?列表中的唯一或Linq中的null?
【发布时间】:2013-10-17 11:24:45
【问题描述】:

我有一个字符串列表,并且想使用单行 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() 将列表折叠为其唯一值,但我不知道如何执行“单或空”(如果有多个项目,SingleOrDefault() 会抛出异常; FirstOrDefault() 将始终返回第一个项目,如果有两个或更多我想要的,则不会返回 null。)

有什么想法吗?我真的很好奇是否有一种简单的方法可以在我忽略的一行中做到这一点。如果您不必编写扩展方法来使其工作,则可以加分。谢谢!

【问题讨论】:

    标签: linq


    【解决方案1】:

    这样可以吗?

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

    更新为处理空集合

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

    【讨论】:

    • col 为空时会抛出异常。
    • col.Distinct().Count() > 1 ? : null : col.First();
    【解决方案2】:
    col.Distinct().Count() == 1? col.First() : null;
    

    【讨论】:

    • 呸,我的写反了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    相关资源
    最近更新 更多