Проблема, сортирующая списки с помощью делегатов

Это может сделать либо.

https://github.com/Soluto/graphql-to-mongodb

Appsync является платформой плагинов общего назначения, поэтому для ее использования потребуются другие API.

Вот доклад на этой неделе о GraphQL против REST:

https://github.com/MiyamotoAkira/grapqhl-presentation-round1

19
задан Jonathan Leffler 23 October 2008 в 17:39
поделиться

6 ответов

Я думаю, что Вы хотите:

myList.Sort( delegate (MyType t1, MyType t2) 
    { return (t1.ID.CompareTo(t2.ID)); } 
);

Для сортировки Вас нужно что-то другое, чем "истинный/ложный", необходимо знать если его равное, больше, чем, или меньше, чем.

49
ответ дан 30 November 2019 в 02:12
поделиться

Вид не берет двоичный предикат, он берет Comparison<T> делегат, который возвращается int не bool.

возвращаемые значения 0 для того, когда объекты равны, <0 для того, когда первый объект является меньше, чем второе, и >0 для того, когда первый объект больше, чем второе.

10
ответ дан 30 November 2019 в 02:12
поделиться

В будущем, если бы Вы хотите отладить проблемы как это, я рекомендовал бы вспыхивать определение делегата от вызова Вида, как это:

Comparison<MyType> c = delegate(MyType t1, MyType t2){ ... };
myList.Sort(c);

Тот путь, Вы видите, находится ли проблема в Вашем вызове метода, или в Вашем определении делегата. Некоторые люди предпочитают оставлять это этим путем (с более описательным именем, чем "c", очевидно) для создания кода более читаемым. Я мог как хотите =-)

3
ответ дан 30 November 2019 в 02:12
поделиться

Удостоверьтесь, является ли Ваше свойство ID типом данных значения по умолчанию, таким как Интервал или Строка. Если идентификатор является типом ссылки на объект, тот объект должен реализовать IComparer или IComparer.

0
ответ дан 30 November 2019 в 02:12
поделиться

Извините за предыдущее сообщение. Редактор не берет < и > символы, и я не заметил предварительный просмотр прямо при редакторе. Если свойство ID является типом объекта, объект должен реализовать IComparer или IComparer< T>.

0
ответ дан 30 November 2019 в 02:12
поделиться

Способ obj. Вид (делегат (...)); динамическая сортировка в одном месте. Если у Вас есть несколько мест, делающих ту же сортировку, или Вам нужна более гибкая сортировка, можно рассмотреть для создания класса, реализовав IComparer< T>. вот пример:

public class MyTypeComparer : IComparer<MyType>
{
  public MyTypeComparer() // default comparer on ID
  { ... }

  public MyTypeComparer(bool desc) // default with order specified

  public MyTypeComparer(string sort, bool desc) // specified sort and order such as property name, true or false.
  { ... }

  public int Compare(MyType a, MyType b) // implement IComparer interface
  { ... } // this is real sorting codes
}

и вот пример для использования его:

List<MyType> myList = GetList();
myList.Sort(new MyTypeComparer());
// myList.Sort(new MyTypeComparer(false));
// myList.Sort(new MyTypeComparer("FirstName", true));
0
ответ дан 30 November 2019 в 02:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: