如何与LINQ中省略的空间进行比较?

时间:2017-03-20 08:41:12

标签: c# linq

我有这个LINQ Where子句:

 var ext = extendedPhrases
            .Where(x => x.HepburnRomaji != x.Romaji && x.Romaji != null);

有没有办法可以从x.Romaji中删除空格,以便我可以将HephurnRomaji与字符之间没有空格的x.Romaji进行比较?

3 个答案:

答案 0 :(得分:4)

  1. 首先进行空检查。否则,你将NullReferenceException从字符串中删除空格。
  2. 使用String.Replace删除Romaji中的空格
  3. 代码

    var ext = extendedPhrases
       .Where(x => x.Romaji != null && x.HepburnRomaji != x.Romaji.Replace(" ", ""));
    

答案 1 :(得分:2)

变化

.Where(x => x.HepburnRomaji != x.Romaji && x.Romaji != null);

进入

.Where(x => x.Romaji != null && x.HepburnRomaji != x.Romaji.Replace(" ",""));

答案 2 :(得分:1)

一个明显的选择是使用Replace。但是,它为每个包含空格的字符串创建新对象。如果您想避免创建新对象,请使用SequenceEqual

Where(x =>
    x.Romaji != null
&& !x.HepburnRomaji.SequenceEqual(x.Romaji.Where(c => c != ' ')
)