gpt4 book ai didi

c# - 通用列表和 IComparable 排序错误 : Can not convert lambda expression

转载 作者:行者123 更新时间:2023-11-30 20:17:02 25 4
gpt4 key购买 nike

我已经实现了自己的 GenericList 和 Task 类,例如:

public GenericList<T> where T: Task
{
public List<T> list = new List<T>();
....
public void Sort()
{
list = list.Sort((a,b) => b.Id.CompareTo(a.Id) > 0);
//here I am getting the Error Warning by Visual Studio IDE
//Error: Can not convert lambda expression to
//'System.Collections.Generic.IComparer<T>' because it is not a delegate type
}
}

public class Task
{
public int Id {get; set;}
public Task(int ID)
{Id = ID;}
}

here I am getting the Error Warning by Visual Studio IDE Error: Can not convert lambda expression to 'System.Collections.Generic.IComparer' because it is not a delegate type

我什至尝试使用 Compare.Create 方法在 Sort() 方法中实现以下内容:

list = list.OrderBy(x => x.Id,
Comparer<Task>.Create((x, y) => x.Id > y.Id ? 1 : x.Id < y.Id ? -1 : 0));
//Here the Error: the type argument for the method can not be inferred

但我仍然收到错误。

我试图在我在 GenericList 中实现排序时根据任务的 ID 对任务进行排序。有人可以帮助我如何实现这一目标吗?

感谢任何帮助。提前谢谢你。

最佳答案

首先,不要将Sort() 结果分配给变量,因为它是就地排序。并将您的代码更改为

list.Sort((a, b) => b.Id.CompareTo(a.Id)); // sort and keep sorted list in list itself

关于c# - 通用列表和 IComparable 排序错误 : Can not convert lambda expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46625992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com