C # Linq, где предложение как переменная

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

Для данного Например, я думаю, что самым ясным вариантом будет предоставление значения по умолчанию для идентификации, в этом случае сделайте что-то вроде:

fooBar <- function(x, y=0) {
  x + y
}

. Это самый короткий из показанных до сих пор параметров, а краткость может помочь в удобочитаемости (а иногда даже скорость выполнения). Понятно, что возвращаемое является суммой x и y, и вы можете видеть, что y не получает значение, которое будет 0, которое при добавлении x будет просто результатом x. Очевидно, что если используется что-то более сложное, чем добавление, тогда потребуется другое значение идентификатора (если оно существует).

Мне очень нравится в этом подходе, так как ясно, что значение по умолчанию используется при использовании функцию args или даже посмотреть файл справки (вам не нужно прокручивать вниз до деталей, это прямо там в использовании).

Недостатком этого метода является то, что значение по умолчанию является сложным (требуется несколько строк кода), то это, вероятно, уменьшит читаемость, чтобы попытаться поместить все это в значение по умолчанию, а подходы missing или NULL станут намного более разумными.

Некоторые другие отличия между методами будут отображаться при передаче параметра другой функции или при использовании функций match.call или sys.call.

Итак, я думаю, что «правильный» метод зависит о том, что вы планируете делать с этим конкретным аргументом и какую информацию вы хотите передать читателям вашего кода.

41
задан kds6253 3 January 2012 в 21:50
поделиться

2 ответа

Это:

var query = from something in someList where whereClause;

является сокращением для:

var query = someList.Where(something => whereClause);

Предполагая, что someList является IEnumerable<Address>, Where относится к Enumerable.Where Extension Метод . Этот метод ожидает Func<Address, bool>, который вы можете определить следующим образом:

Func<Address, bool> whereClause = address => address.Zip == 23456;
var query = someList.Where(whereClause);
9
ответ дан dtb 3 January 2012 в 21:50
поделиться

Это встроенная функция LINQ. Просто используйте метод расширения Where.

См. Синтаксис запроса LINQ в сравнении с синтаксисом метода (C #) для получения дополнительной информации.

1
ответ дан Rob Windsor 3 January 2012 в 21:50
поделиться
Другие вопросы по тегам:

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