1

我最近为 开发了一个处理程序DataTable for MVC,但我遇到了一个问题。出于某种原因,当我对要从 MySql 服务器检索的数据进行排序时,它每次都会给我重复的同一个人。

我想如果这很奇怪,那就是随机的人或每个人,但事实并非如此。我将问题缩小到我的这段代码,但我尝试了几件事,但我不明白为什么。

我做了一个直截了当的sort,它工作得很好。我只能得出结论,这与我的机器有关,因为我不记得在另一台机器上有这个问题。如果有人可以帮助我并理解它为什么这样做,我将不胜感激。

Expression<Func<T, object>> sortExpression = null;
                if(lambda.Lambda == null)
                {
                    var param = Expression.Parameter(typeof(T), "item");
                    sortExpression = Expression.Lambda<Func<T, object>>(
                        Expression.Property(param, lambda.ColumnName), param);
                        //Expression.Convert(Expression.Property(param, lambda.ColumnName), typeof(object)), param);
                }

                if(order == null) { 
                    if(lambda.IsDescending)
                    {
                        if (sortExpression != null)
                            order = results.OrderByDescending(sortExpression.Compile());
                        else
                            order = results.OrderByDescending(lambda.Lambda);
                    }
                    else
                    {
                        if (sortExpression != null)
                            order = results.OrderBy(sortExpression.Compile());
                        else
                            order = results.OrderBy(lambda.Lambda);
                    }
                }
                else
                {
                    if (lambda.IsDescending)
                    {
                        if (sortExpression != null)
                            order = order.ThenByDescending(sortExpression.Compile());
                        else
                            order = order.ThenByDescending(lambda.Lambda);
                    }
                    else
                    {
                        if (sortExpression != null)
                            order = order.ThenBy(sortExpression.Compile());
                        else
                            order = order.ThenBy(lambda.Lambda);
                    }
                }
            }
4

0 回答 0