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)));