List.OrderBy在变量中定义顺序 - c#

我有一个包含对象的列表:

class MyType
{
    String Name;
    String Address;
    DateTime BirthDay;
}

List<MyType> myList;

我想编写一个像这样工作的函数:

public void SortList(int value)
{
    // orderValue => this is the variable I need
    if (value == 0)
        orderValue = MyType.Name; // Sort list by Name
    else if (value == 1)
        orderValue = MyType.Address; // Sort list by Address
    else if (value == 1)
        orderValue = MyType.BirthDay; // Sort list by BirthDay

    if (orderValue != null)
    {
        List<MyType> sortedList = myList.OrderBy(orderValue).ToList();
        if (Enumerable.SequenceEqual(myList, sortedList))
            sortedList = myList.OrderByDescending(orderValue).ToList();
        myList = sortedList;
    }
}

如何编写我的orderValue以使此代码正常工作?

这只是我的代码的综合,如果需要,我可以提供更多详细信息。

参考方案

OrderBy可以接受Func,并且您可以拥有这样的变量

Func<Person, string> orderFunc = x => x.Name;

if (value == 0)
   orderFunc = x => x.Name;
else if (value == 1)
   orderFunc = x => x.Address;

myList = myList.OrderBy(orderFunc).ToList();

List.contains()没有返回正确的结果,但是手动搜索确实 - java

我的代码发生了一个奇怪的问题: RestAPIHeader requestedBy = new RestAPIHeader("X-Requested-By", "test"); // Act RestAPIRequest req = prepareLoginRequest(USER_NAME, PASSWORD); /…

检测到空列表的嵌套列表时如何返回True? - python

我试图在编写语句时返回True值:list = [[],[],[],[]]list == []而是返回False我的嵌套列表由可变数量的空列表组成。我该如何写一条适用于[1/2/3 ...]空列表的嵌套列表的语句? 参考方案 all(x == [] for x in your_list) 如果全部为空则返回Trueany(x != [] for x in y…

List.Add()在C#中不起作用-吸气剂和吸气剂问题? - c#

我有这个属性:public virtual List<FieldImage> Images { get; set; } 如果我去获取具有此属性的类,则使用这样的实体从数据库中获取...Field field = this.unitOfWork.FieldRepository.GetByID(Convert.ToInt32(fieldID)); 然…

Python list.insert()多索引/列表列表 - python

出于性能原因,我想使用Python列表insert()方法。我将说明原因:我的最终列表是31k * 31k矩阵:w=31*10**3 h=31*10**3 distance_matrix = [[0 for x in range(w)] for y in range(h)] 我打算一次更新一次矩阵:for i in range(len(index)): fo…

list.AddRange无法隐式转换类型“ void” - c#

namespace SubscriptionWebsite.PlaceHolders { public class TreeData { public int ID { get; set; } public int? ParentLocationID { get; set; } public string name { get; set; } public …