C# 用C从字符串列表中查找最大数

C# 用C从字符串列表中查找最大数,c#,entity-framework-4,C#,Entity Framework 4,我有一个字符串列表,其中包含带数字的字符。我只是想拆分字符串以获得数字,然后我需要从拆分的数字列表中找到最大数字 匹配字符串 示例列表值 结果 我已经尝试了下面的代码 当我执行代码时,它总是在到达abc45后附带abc10。在提供通用逻辑方面的任何帮助都将不胜感激 谢谢使用OrderByDescending获得最大的数字,然后将+1添加到结果中 var result = (from Ps in db.Ps where Ps.No.StartsWith(SF)

我有一个字符串列表,其中包含带数字的字符。我只是想拆分字符串以获得数字,然后我需要从拆分的数字列表中找到最大数字

匹配字符串

示例列表值

结果

我已经尝试了下面的代码

当我执行代码时,它总是在到达abc45后附带abc10。在提供通用逻辑方面的任何帮助都将不胜感激

谢谢

使用OrderByDescending获得最大的数字,然后将+1添加到结果中

var result = (from Ps in db.Ps 
                where Ps.No.StartsWith(SF) 
                select Ps.No)
            .OrderByDescending(m => m.PS.No)
            .FirstOrDefault();

这个怎么样?我试过了,它似乎和你描述的一样

public static string testString(string[] input, string startString)
    {
        int max = 0;
        try
        {
            max = input.Where(s => s.StartsWith(startString) && s.Length > startString.Length)
                       .Max(s => int.Parse(s.Replace(startString, string.Empty)));
        }
        catch
        {
            // no worries, this means max was "abc" without a number
        }
        return string.Format("{0}{1}", startString, (max + 1).ToString());

    }
称之为

string test = testString(new string[] { "abc1", "abc123", "abc23", "xyz23" }, "abc");
请尝试以下代码:

var myStrings = new List<string>();
            myStrings.Add("abc9");
            myStrings.Add("abc100");
            myStrings.Add("abc999");
            myStrings.Add("abc");

            var maxNumber = "abc" + (from myString in myStrings let value = Regex.Match(myString, @"\d+").Value select Convert.ToInt32(value == string.Empty ? "0" : Regex.Match(myString, @"\d+").Value) + 1).Concat(new[] { 0 }).Max();

请尝试下面提到的代码,从列表中获取最大编号

var max = myList.Select(v => int.Parse(v.Substring(3))).Max();

从那里你得到的abc1000作为最大的一个例子,我正在寻找。当列表中的最大值为abc999时,我需要得到abc1000。那么您的意思是最大+1是您的期望值result@SivaCharan. 对是的。。另外,如果abc是列表中唯一的一个值,那么它应该会出现abc1。@Deva,如果它的abc994呢?我想你不想要abc995。。你是在找四舍五入到最近的10吗
public static string testString(string[] input, string startString)
    {
        int max = 0;
        try
        {
            max = input.Where(s => s.StartsWith(startString) && s.Length > startString.Length)
                       .Max(s => int.Parse(s.Replace(startString, string.Empty)));
        }
        catch
        {
            // no worries, this means max was "abc" without a number
        }
        return string.Format("{0}{1}", startString, (max + 1).ToString());

    }
string test = testString(new string[] { "abc1", "abc123", "abc23", "xyz23" }, "abc");
var myStrings = new List<string>();
            myStrings.Add("abc9");
            myStrings.Add("abc100");
            myStrings.Add("abc999");
            myStrings.Add("abc");

            var maxNumber = "abc" + (from myString in myStrings let value = Regex.Match(myString, @"\d+").Value select Convert.ToInt32(value == string.Empty ? "0" : Regex.Match(myString, @"\d+").Value) + 1).Concat(new[] { 0 }).Max();
var max = myList.Select(v => int.Parse(v.Substring(3))).Max();