C# 订单列表<;T>;按枚举

C# 订单列表<;T>;按枚举,c#,C#,这让我发疯,但一定很简单 我有一门课,力量的价值可以是高/中/低:- public class SearchResults { private List<string> _categories; public string caseID { get; private set; } ... public string Strength { get; set; } } 我(可能错误地)尝试使用枚举:- enum ResultStrength {

这让我发疯,但一定很简单

我有一门课,力量的价值可以是高/中/低:-

public class SearchResults
{
    private List<string> _categories;
    public string caseID { get; private set; }
    ...
    public string Strength { get; set; }
}
我(可能错误地)尝试使用枚举:-

enum ResultStrength
{
    HIGH,
    MEDIUM,
    LOW
}
但是我找不到使用它来强制执行命令的方法,如果我使用以下命令,那么它会给我一个“无法将lambda表达式转换为类型'System.Collections.Generic.IComparer',因为它不是委托类型”

我尝试过实现各种
IComparer
Comparison
,但我就是无法让它编译和/或正常工作

var ReferenceList = new List<string>() { "Low", "Medium", "High" };
var unorderedList = new List<string>() { "Low", "High", "Low", "Medium", "High" };

// Now we order unorderedList by using element's position in the ReferenceList.
unorderedList.Sort((a, b) => ReferenceList.IndexOf(a).CompareTo(ReferenceList.IndexOf(b)));

只需将其转换为整数:

resultres.Sort((x, y) => ((int)x.ResultStrength).CompareTo((int)y.ResultStrength));

您是否尝试过为枚举名称指定一个值

enum ResultStrength
{
    HIGH = 2,
    MEDIUM = 1,
    LOW = 0
}
那你就跟着我走


如果您可以修改
SearchResults
类,那么只需将
Strength
属性从字符串类型更改为
ResultStrength
enum的类型即可。JSON.NET足够聪明,可以从字符串名创建枚举值

public ResultStrength Strength { get; set; }
排序将很简单:

resultres.OrderBy(r => r.Strength)
注意:如果不向枚举成员提供值,默认情况下,它们将获得以下值:

enum ResultStrength
{
    HIGH = 0,
    MEDIUM = 1,
    LOW = 2
}
如此高的价格将先于低的价格。如果要颠倒顺序,可以使用降序排序


否则,您可以按从
strength
string解析的枚举值进行排序:

resultres.OrderBy(r => (int)Enum.Parse(typeof(ResultStrength),r.Strength))

不需要使用enum,您可以利用引用列表中元素的索引对无序列表进行正确排序

var ReferenceList = new List<string>() { "Low", "Medium", "High" };
var unorderedList = new List<string>() { "Low", "High", "Low", "Medium", "High" };

// Now we order unorderedList by using element's position in the ReferenceList.
unorderedList.Sort((a, b) => ReferenceList.IndexOf(a).CompareTo(ReferenceList.IndexOf(b)));
var ReferenceList=newlist(){“低”、“中”、“高”};
var unorderedList=新列表(){“低”、“高”、“低”、“中”、“高”};
//现在,我们使用元素在引用列表中的位置对无序列表进行排序。
无序列表.Sort((a,b)=>ReferenceList.IndexOf(a).CompareTo(ReferenceList.IndexOf(b));

orderBy是怎么回事?为此干杯……你活着,你在学习!我发现我必须执行以下操作,因为原始resultres没有被排序
resultres=resultres.OrderBy(r=>r.matchStrength.ToList()
enum ResultStrength
{
    HIGH = 0,
    MEDIUM = 1,
    LOW = 2
}
resultres.OrderBy(r => (int)Enum.Parse(typeof(ResultStrength),r.Strength))
var ReferenceList = new List<string>() { "Low", "Medium", "High" };
var unorderedList = new List<string>() { "Low", "High", "Low", "Medium", "High" };

// Now we order unorderedList by using element's position in the ReferenceList.
unorderedList.Sort((a, b) => ReferenceList.IndexOf(a).CompareTo(ReferenceList.IndexOf(b)));