【问题标题】:at least one object must implement icomparable on datasourceresult至少一个对象必须在 datasourceresult 上实现 icomparable
【发布时间】:2016-09-10 05:37:03
【问题描述】:

我正在调试以下代码,.ToList() 方法工作得非常好,最后一行抛出异常“至少一个对象必须实现 icomparable”:

var result = response.ToDataSourceResult(request);

这里发生了什么?

public DataSourceResult GetProveedores([System.Web.Http.ModelBinding.ModelBinder(typeof(WebApiDataSourceRequestModelBinder))]DataSourceRequest request,string group)
        {
            var domainContext = new PrincipalContext(ContextType.Domain);
            var groupPrincipal = GroupPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, group);

            var listTmp = new List<Proveedores>();

            List<Proveedores> ListReturn = new List<Proveedores>();

            int count = 0;
            foreach (var item in groupPrincipal.Members)
            {
                ListReturn.Add(new Proveedores { nameProveedor = item.SamAccountName, id=count, });

                //ListReturn[count].nameProveedor.CompareTo(item.SamAccountName);
                count++;
            }
            var response = ListReturn.OrderBy(p => p.nameProveedor).OrderBy(s => s.id).ToList();

            var result = response.ToDataSourceResult(request);
            return result;
        }

【问题讨论】:

  • 问题出在var response = ...。错误在以下行中抛出,因为它可能导致查询枚举并且nameProveedor 的类型没有实现IComparable
  • 如果ToDataSourceResultkendu-UIextension method mentioned in this post,那么我怀疑你的类Proveedores需要实现IComparable。

标签: c# .net linq


【解决方案1】:

尝试删除该行的 OrderBy 部分:

ListReturn.OrderBy(p => p.nameProveedor).OrderBy(s => s.id).ToList();

如果到那时为止在调试器中都能正常工作,那么您将知道下一步该去哪里。我怀疑“nameProveedor”不是原语,因此 LINQ 无法执行使网格工作所需的比较。

【讨论】:

    猜你喜欢
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 2015-08-10
    相关资源
    最近更新 更多