mal*_*kam 2 .net c# linq performance
使用LINQ,以下哪项性能更好?
sets.FirstOrDefault(x=>x.name=="xxx")
Run Code Online (Sandbox Code Playgroud)
要么
sets.FirstOrDefault(x=>!string.IsNullOrEmpty(x.name) && x.name.Equals("xxx",StringComparison.InvariantCultureIgnoreCase));
Run Code Online (Sandbox Code Playgroud)
这里的名字可以null.我在我的应用程序中使用此类查询20次以上.
有没有更好的方法?
这两个陈述之间存在重大差异,因此您不仅可以判断它们的性能.
第一个表现更好,但第二个表现不同(因为它不检查大/小写和变音符号).
或者,您可以像这样重写第二个:
sets.FirstOrDefault(x => string.Equals(x.name, "xxx",StringComparison.OrdinalIgnoreCase));
Run Code Online (Sandbox Code Playgroud)
它不需要string.IsNullOrEmpty使第二次调用比它快一点.
正如韦斯顿所指出的那样:使用OrdinalIgnoreCase性能更好InvariantCultureIgnoreCase,因此微软的这个通知.