我正在对下面的代码进行讨论,并且.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;
}
答案 0 :(得分:2)
尝试删除此行的OrderBy部分:
ListReturn.OrderBy(p => p.nameProveedor).OrderBy(s => s.id).ToList();
如果到那时在调试器中有效,你就会知道接下来要去哪里。我怀疑'nameProveedor'不是原始的,因此LINQ无法进行必要的比较以使网格工作。