使用LINQ和lambdas将字符串放在适当的大小写 - c#

我有一个称为ProperCase的函数,该函数接受一个字符串,然后将每个单词中的第一个字母转换为大写。因此,ProperCase(“ john smith”)将返回“ John Smith”。这是代码:

    public string ProperCase(string input)
    {
        var retVal = string.Empty;
        var words = input.Split(' ');

        foreach (var word in words)
        {
            if (word.Length == 1)
            {
                retVal += word.ToUpper();
            }
            else if (word.Length > 1)
            {
                retVal += word.Substring(0, 1).ToUpper() + word.Substring(1).ToLower();
            }

            retVal += ' ';
        }

        if (retVal.Length > 0)
        {
            retVal = retVal.Substring(0, retVal.Length - 1);
        }

        return retVal;
    }

这段代码可以完美地工作,但是我敢肯定我可以使用LINQ和lambdas来做得更好。可以给我示范一下吗?

参考方案

将输入字符串拆分为单词,将每个单词转换为标题大小写,然后将转换后的单词重新组合在一起:

TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;

string result = string.Join(" ", input.Split(' ')
                                      .Select(word => textInfo.ToTitleCase(word))
                                      .ToArray());

Java中的OrderByDecending(LINQ)等效项 - java

嗨,我是一名使用Java的C#开发人员。问题很简单:我如何才能将下面的c#代码写入Java并仍能正常工作:myCoffeeList.OrderByDescending(x => x.Name?.ToLower()?.Trim() == sender.Text.ToLower()?.Trim())); 我的sender.Text基本上是一个文本框。文本的…

Linq-在嵌套集合中查找元素 - c#

我有一个通用列表-SupportedTypeGroups。每个SupportedTypeGroup都有SupportedTypes属性(SupportedType的通用列表)。如何构造Linq查询以使用所需名称查找SupportedType? 参考方案 var result = SupportedTypeGroups .SelectMany(g => …

LINQ RemoveAll代替循环 - c#

我有两个for循环,用于从列表中删除项目。我正在为这些循环寻找等效的LINQ语句for (Int32 i = points.Count - 1; i >= 0; i--) { for (Int32 j = touchingRects.Count - 1; j >= 0; j--) { if (touchingRects[j].HitTest(po…

Linq Any()的哪种使用效率更高? - c#

我有一个Linq查询,如下所示:return this._alarmObjectAlarmViolationList .Where(row => row.ObjectId == subId) .Where(row => row.AlarmInternalId == "WECO #1 (StdDev > UCL)") .W…

LINQ to SQL中的“无法识别的表达式节点数组索引linq”异常 - c#

这是我的LINQ,其中我将DateTime类型的字段与当前日期进行了比较- var srs = (from s in dcDistrict.ScheduledReportStatus where s.ReportConfigId.Equals(ConfigId) && s.Status.HasValue && s.Status…