gpt4 book ai didi

c# - 比较对象和返回列表

转载 作者:行者123 更新时间:2023-11-30 20:04:36 25 4
gpt4 key购买 nike

我有一个如下所示的类定义:

public class MyObjectModel
{
public int ObjectID { get; set; }

//for when the user's data is split in 2 fields
public string FirstName { get; set; }
public string LastName { get; set; }

//for when the user's data is all in one field
public string FirstLastName { get; set; }
}

我有这些 MyObjectModel 的列表,我想使用自定义排序过程按名称对它们进行排序,因为这涉及检查数据是否包含 LastName(在此case sort using the LastName) 或者只是FirstLastName(在这种情况下,我将打破字符串并在第二项上排序,如果有的话,或者只是整个如果只有一个单词,则为字符串。)

我不确定两件事:

  1. 我应该使用 IComparer 还是 IComparable
  2. 一旦它确定了排序顺序(我可以做到),我该怎么做才能使该方法的输出是一个表示 ObjectID 的整数列表。

最佳答案

使用 Linq:

  List<MyObjectModel> objects = new List<MyObjectModel>();
List<int> ids = objects.OrderBy(o => FunctionWhichReturnsNameForSort(o)).Select(o => o.ObjectID).ToList();

FunctionWhichReturnsNameForSort 可以在另一个类、扩展或作为成员中实现。

// should be in a static helper class
public static string NameForSort(this MyObjectModel obj)
{
if (!string.IsNullOrEmpty(obj.LastName)) return obj.LastName;

return obj.FirstLastName.Split(... // your splitting logic goes here
}

var ids = objects.OrderBy(o => o.NameForSort()).Select(o => o.ObjectID).ToList();

关于c# - 比较对象和返回列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12712445/

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