c# - 按自定义顺序对列表进行排序

标签 c#

我有一些类型的数组

private string[] linkTypes = {
    "dog",
    "cat",
    // and so on ..
};

Yes, I could use an enum but in this case it has to be an array of strings.

现在我有一个名为“LinkElement”的对象列表

private List<LinkElement> links = new List<LinkElement>();

这些对象有一个名为“Type”的字符串属性

string linkType = links[index].Type;

如果 linkTypes 包含元素“dog”和“cat”,则我的链接只能将“dog”或“cat”作为其类型。

我想按链接类型的顺序对列表“链接”进行排序。

表示列表顺序首先包含类型为“dog”的链接,然后出现类型为“cat”的链接。

List<LinkElement> sortedLinks = ; // sort links

for (int i = 0; i < sortedLinks.Count; i++)
{
    LinkElement currentLink = sortedLinks[i];
    Console.WriteLine(currentLink.Type);
}

// Write down dogs first, cats after

有人可以帮我吗?

最佳答案

假设linkTypes(私有(private)字符串数组)与links(LinkElement列表)位于同一类中,您可以使用LINQ的使用简单的 lambda 表达式的 OrderBy:

var sortedLinks = links.OrderBy(le => Array.IndexOf(linkTypes, le.linkType)).ToList()

关于c# - 按自定义顺序对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47293353/

相关文章:

c# - Windows 服务中托管的 WCF 数据服务中的 HttpContext.Current 为空

c# - 在 C# 中将 Soap 请求 header 从 text/xml 更改为 soap/xml for asmx webservice

c# - 使用 c# Winforms 创建自定义用户控件的属性

c# - 使用 C# 创建编程语言

c# - Fiddler - asp.net web api 自定义 POST

c# - Avalondock 如何设置 LayoutDocument 的制表符宽度

c# - 可空类型之间的转换

c# - 关于位图、图像和 `using` block 的一些疑问

c# - 如何在 Xamarin.Forms 中强制使用灯光模式?

c# - 将日期转换为日期时间格式c#