Переменная не может быть распознана сервером [дубликат]

Решение для строковых значений действительно странно:

.OrderBy(f => f.SomeString == null).ThenBy(f => f.SomeString) 

Единственная причина, по которой это работает, состоит в том, что первое выражение OrderBy(), sort bool: true / false , false Результат сначала следует результатом true (nullables) и ThenBy() сортирует ненулевые значения в алфавитном порядке.

Итак, я предпочитаю делать что-то более читаемое, например следующее:

.OrderBy(f => f.SomeString ?? "z")

Если SomeString равно null, он будет заменен на "z", а затем отсортировать все по алфавиту.

ПРИМЕЧАНИЕ. Это не окончательное решение, поскольку "z" идет первым, чем z-значения, такие как zebra.

UPDATE 9/6/2016 - О комментарии @jornhd, it на самом деле это хорошее решение, но оно все еще немного сложное, поэтому я рекомендую его обернуть в классе Extension, например:

public static class MyExtensions
{
    public static IOrderedEnumerable<T> NullableOrderBy<T>(this IEnumerable<T> list, Func<T, string> keySelector)
    {
        return list.OrderBy(v => keySelector(v) != null ? 0 : 1).ThenBy(keySelector);
    }
}

И просто используйте его как:

var sortedList = list.NullableOrderBy(f => f.SomeString);
-2
задан Ali 4 March 2019 в 14:35
поделиться

1 ответ

Я не знаю, что вы пытаетесь запросить, но основываясь на вашем фрагменте кода, вы используете mysqli и делаете выбор, основываясь на имени пользователя. Приведенный ниже код автоматически соединит вас с базой данных, если введенные учетные данные базы данных в порядке, и вы можете получить результаты на основе запрашиваемого имени пользователя, если информация о имени пользователя существует в вашей базе данных

<html>
   <head>
      <title></title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3306';
         $dbuser = 'root';
         $dbpass = '';
         $dbname = 'your db';
         $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);

         if(! $conn ) {
            die('Could not connect: ' . mysqli_error());
         }
         echo 'Connected successfully<br>';
         $sql = "select * from user WHERE username = '$username'";
         $result = mysqli_query($conn, $sql);

         if (mysqli_num_rows($result) > 0) {
            while($row = mysqli_fetch_assoc($result)) {
               echo "UserName: " . $row["username"]. "<br>";
            }
         } else {
            echo "0 results";
         }
         mysqli_close($conn);
      ?>
   </body>
</html>
0
ответ дан Nancy Mooree 4 March 2019 в 14:35
поделиться
Другие вопросы по тегам:

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