gpt4 book ai didi

c# - LINQ仅对数字数据进行排序但保持列表完整

转载 作者:行者123 更新时间:2023-12-03 18:40:18 26 4
gpt4 key购买 nike

我有以下程序。我的数据类型都是字符串。从列表中,我想对那些具有数值的条目进行排序。那些没有数字数据的条目将始终位于最后一项。这是我的代码。请帮忙。

 class Program
{
static void Main(string[] args)
{
var persons = new List<Person>();
persons.Add(new Person { Name = "John", Position = "100" });
persons.Add(new Person { Name = "Peter", Position = "78" });
persons.Add(new Person { Name = "Larry", Position = "NA" });
persons.Add(new Person { Name = "Lovely", Position = "" });
persons.Add(new Person { Name = "Rose", Position = "50" });
persons.Add(new Person { Name = "Drew", Position = "34" });

//Help me do the sorting for position that is a number. Priority in sorting are positions which are numbers
var sortedPersons = persons.OrderBy(x=>double.Parse(x.Position)).ToList();
foreach (var person in sortedPersons)
Console.WriteLine("Name: {0}, Position: {1}", person.Name, person.Position);
Console.ReadLine();
}
}
public class Person
{
public string Name { get; set; }
public string Position { get; set; }
}

根据我的示例,我想将项目排序为
  • 德鲁
  • 玫瑰
  • 彼得
  • 约翰
  • 可爱的
  • 拉里

  • (对于 Lovely 和 Larry,只要我正确排序 Drew to John,它们的排序方式对我来说并不重要)。

    最佳答案

    尝试使用 .TryParse() 代替,并将最大值分配给无法解析的任何内容

    您可以使用 double.MaxValuedouble.PositiveInfinity 作为默认值。后者是两者中较大的一个。

    persons.OrderBy(x => double.TryParse(x.Position, out double d) ? d : double.PositiveInfinity)

    关于c# - LINQ仅对数字数据进行排序但保持列表完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60490319/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com