Можно использовать ISNULL
и проверить ответ по известному выводу:
SELECT case when ISNULL(col1, '') = '' then '' else col1 END AS COL1 FROM TEST
Это одно из использования лямбда-выражений:
c.Sort ((x, y) => xACompareTo (yA))
EDIT : исправленный пример возврата int (с использованием CompareTo) вместо bool
Понятия не имею, что такое c.Sort ()
в вашем примере, так как это может быть много вещей (вы имеете в виду List
?), Но одна вещь, которой он точно не является, - это LINQ. LINQ не имеет Sort ()
- у него есть OrderBy ()
.
Тем не менее, последний также работает с IComparer
, и нет никакого способа для создания экземпляра анонимного класса, реализующего "встроенный" интерфейс, поэтому вам нужно будет определить класс.
Для List
существует перегрузка, которая принимает Comparison
. Поскольку это тип делегата, вы можете использовать лямбда для предоставления встроенной функции:
List<int> xs = ...;
xs.Sort((x, y) => y - x); // reverse sort
У меня есть класс ProjectionComparer
в MiscUtil , поэтому вы можете:
IComparer<Foo> comparer = ProjectionComparer<Foo>.Create(x => x.Name);
c.Sort(comparer);
Код также находится в этот ответ .
Вы можете создать экземпляр Comparison
напрямую с лямбда-выражением, но мне вообще не нравится такое дублирование. Сказав это, часто оказывается несколько короче ...
РЕДАКТИРОВАТЬ: Как отмечалось, начиная с .NET 4.5, используйте Comparer
, чтобы сделать то же самое.
Если объекты в списке уже реализуют IComparable, вам не понадобится другой. Но если вам нужно настраиваемое сравнение, вы можете реализовать IComparer во вложенном классе. Вы также можете использовать лямбда-выражение для создания метода сравнения "на лету":
people.Sort ((person1, person2) => person1.Age.CompareTo (person2.Age));