LINQ 分组依据,其中键是一个对象

本文关键字:一个对象 LINQ | 更新日期: 2023-09-27 18:34:33

>我有一个这个对象的数组:

public class WorkingOrderContract : BaseContract, IEquatable<WorkingOrderContract>
{
    public string Id { get; set; }
    public string Customer { get; set; }
    public string CategoryId { get; set; }
    public int ResourceId { get; set; }
    public virtual ResourceContract Resource { get; set; }
    public virtual CategoryContract Category { get; set; }
    public WorkingOrderEnum EWorkingOrder { get; set; }
    public TimeFlagEnum ETimeFlag { get; set; }
    public bool Equals(WorkingOrderContract other)
    {
        return this.Id == other.Id;
    }
}

由 JSON 文件动态加载。

我正在使用此代码进行分组,但它不起作用

var woListGrupped = this._workingOrderList.GroupBy(wo => wo.Category,
                               wo => wo,
                               (k, g) => new OdlByCategoryContract(k, g.ToList())
                               ).ToList();

我该怎么做?

LINQ 分组依据,其中键是一个对象

您需要删除wo => wo

var woListGrupped = this._workingOrderList.GroupBy(wo => wo.Category,
                               (k, g) => new OdlByCategoryContract(k, g.ToList())
                               ).ToList();

正如@MarcinJuraszek正确指出的那样,除此之外,OdlByCategoryContract还应实施EqualsGetHashCode,以便对列表进行适当的分组。

相关文章: