Выражения C #: динамическая сортировка SQL / LINQ для таблиц данных - PullRequest
1 голос
/ 12 мая 2019

Недавно я разработал обработчик для 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);
                    }
                }
            }
...