加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – linq函数OrderByDescending和OrderBy如何在字符串长度内部

发布时间:2020-12-15 18:31:32 所属栏目:百科 来源:网络整理
导读:我的问题是基于 this question提出的,我在这个问题上发布了答案. here 这是代码. var lines = System.IO.File.ReadLines(@"C:test.txt");var Minimum = lines[0];//Default length setvar Maximum = "";foreach (string line in lines){ if (Maximum.Length
我的问题是基于 this question提出的,我在这个问题上发布了答案. here

这是代码.

var lines = System.IO.File.ReadLines(@"C:test.txt");
var Minimum = lines[0];//Default length set
var Maximum = "";

foreach (string line in lines)
{    
    if (Maximum.Length < line.Length)
    {
        Maximum = line;
    }

    if (Minimum.Length > line.Length)
    {
        Minimum = line;
    }
}

使用LINQ(我的方法)替代此代码

var lines = System.IO.File.ReadLines(@"C:test.txt");
var Maximum = lines.OrderByDescending(a => a.Length).First().ToString();
var Minimum = lines.OrderBy(a => a.Length).First().ToString();

LINQ易于阅读和实现..

我想知道哪一个对性能有好处.
以及Linq如何在内部为OrderByDescending和OrderBy进行长度排序?

解决方法

你可以 read the source code for OrderBy.

停止对代码执行micro-optimizing或premature-optimization.尝试编写正确执行的代码,然后如果您以后遇到性能问题,请分析您的应用程序并查看问题所在.如果由于找到最短和最长的字符串而有一段代码存在性能问题,那么就开始优化这部分.

We should forget about small efficiencies,say about 97% of the time:
premature optimization is the root of all evil. Yet we should not pass
up our opportunities in that critical 3% – Donald Knuth

File.ReadLines返回一个IEnumerable< string>,这意味着如果你对它进行foreach,它将逐个返回给你的数据.我认为你可以在这里做的最好的性能改进是改进从磁盘读取文件.如果它足够小以将整个文件加载到内存中,请使用File.ReadAllLines,如果不是尝试读取适合内存的大块文件.逐行读取文件会因磁盘的I / O操作而导致性能下降.所以这里的问题不是LINQ或循环如何执行,问题在于磁盘读取次数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读