c# - 使用来自另一个列表的参数对一个列表进行排序,并使用可连接的参数

标签 c# list linq

我有 listA 和 listB。

ListA 是一个具有 ListB 对象 ID(foreignKey)的对象列表。 ListB 是一个对象列表,它具有 OrderBy listA 属性。

如何使用简单的 Linq 按 ListB 属性对 ListA 进行排序?

class OrderList
{
    public void OrderByDate(List<ProductionProgress> progressList, 
                            List<Production> productionList)
    {
        //Order progressList by productionList.ProductionDate
    }

    public class ProductionProgress
    {
        public int ProductionID { get; set; }
        public string Progress { get; set; }
    }

    public class Production
    {
        public int ID { get; }
        public string Description { get; set; }
        public DateTime ProductionDate { get; set; }
    }
}

最佳答案

您可以使用此查询:

listA = listA
    .OrderBy(a => listb.FirstOrDefault(b => b.ID == a.objectB_id)?.Date ?? DateTime.MaxValue)
    .ToList();

这可能不是最有效的方法,但它是安全的。因为如果您使用Join,并且存在重复的 OBjectB(根据 ID),您可能会获得重复的 ObjectA 实例。

关于c# - 使用来自另一个列表的参数对一个列表进行排序,并使用可连接的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70958893/

相关文章:

c# - 后台任务中的 Sqlite(Windows 运行时组件项目)

python - 将文件读入列表并去除换行符

python - 将列表和字符串的列表制作成平面列表

c# - .NET 会受益于 "named anonymous"类型吗?

c# - 带有 Type 变量的 Cast<T>()

c# - 从 C# 中的数据结构中查找带有一些 epsilon 的 float ,搜索并插入 O(lg n) 时间

c# 如何连接一个 var 与另一个 var 以指向应用程序 SettingsName?

c# - 类型转换问题

c - 哈希表覆盖

c# - Entity Framework 中匿名类型的返回列表