至少有一个对象必须在datasourceresult上实现icomparable

时间:2016-09-09 21:27:35

标签: c# .net linq

我正在对下面的代码进行讨论,并且.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;
        }

1 个答案:

答案 0 :(得分:2)

尝试删除此行的OrderBy部分:

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

如果到那时在调试器中有效,你就会知道接下来要去哪里。我怀疑'nameProveedor'不是原始的,因此LINQ无法进行必要的比较以使网格工作。