根据C#中的另一个对象数组对一个对象数组进行排序

时间:2021-01-13 20:36:11

标签: c# linq sorting

我有两个对象。我想根据第二个对象的 QuickLinks 对第一个对象的 QuickLinks 属性进行排序。它应该基于 QuickLinkContent.ConfigId

NavigationMenuContent nmc1 = new NavigationMenuContent();
NavigationMenuContent nmc2 = new NavigationMenuContent();

public class NavigationMenuContent
    {
        public int LanguageID { get; set; }

        public QuickLinkContent[] QuickLinks { get; set; }
    }

public class QuickLinkContent
    {
        public Guid ConfigID { get; set; }

        public string Name { get; set; }

        public string Description { get; set; }

        public string Url { get; set; }

        public Guid? ServiceProviderID { get; set; }

        public SchemeContentFile Document { get; set; }
    }

我尝试这样做:

nmc1.QuickLinks = nmc1.QuickLinks.OrderBy(q => nmc2.QuickLinks.ToList().IndexOf(q.ConfigID));

但出现错误:

Cannot convert from System.Guid to QuickLnkContent.

2 个答案:

答案 0 :(得分:3)

我会用字典来做这件事。

CURRENT_SALE

答案 1 :(得分:1)

创建有序的配置 ID 数组:

var orderedIds = nmc2.QuickLinks.Select(ql => ql.ConfigID).ToArray();

然后用它来订购链接

nmc1.QuickLinks = nmc1.QuickLinks
   .OrderBy(ql => Array.IndexOf(orderedIds, ql.ConfigID))
   .ToArray();
相关问题