Проверьте, является ли свойство пустым в лямбда-выражении

Я не уверен, работает ли это на Вас, но когда я делаю маленькое соло проекты PHP с Eclipse, первой вещью, которую я настроил, является скрипт Ant для развертывания проекта к удаленной тестовой среде. Я кодирую далеко локально, и каждый раз, когда я хочу протестировать его, я просто поразил ярлык, который обновляет удаленный сайт.

Eclipse имеет хорошую поддержку Муравья из поля, и сценарии не трудно сделать.

6
задан outis 9 November 2009 в 01:38
поделиться

3 ответа

list.Where(r => r.Properties["RS_Partner_Type"] != null && r.Properties["RS_Title"] != null)
    .OrderByDescending(r => r.Properties["RS_Partner Type"].ToString())
    .ThenBy(r => r.Properties["RS_Title"].ToString());

Или вместо! = Null используйте любой тест, который есть в коллекции Properties.

8
ответ дан 10 December 2019 в 02:49
поделиться

В лямбде можно использовать троичное выражение:

list.OrderByDescending(r => r.Properties["RS_Partner_Type"] == null ? null : r.Properties["RS_Partner Type"].ToString())
    .ThenBy(r => r.Properties["RS_Title"] == null ? null : r.Properties["RS_Title"].ToString());
0
ответ дан 10 December 2019 в 02:49
поделиться

Другой распространенный подход - присвоить коллекции подходящее значение по умолчанию и вернуть его, когда коллекция не имеет определенного ключа. Например, если Properties реализует IDictionary,

public static class IDictionaryExtension {
    public static TValue GetValue<TKey, TValue>(this IDictionary<TKey, TValue> dict, TKey key, TValue default) {
        TValue result;
        return dict.TryGetValue(key, out result) ? result : dflt;
    }
}
...
lvwRetailStores.DataSource = list.OrderByDescending(r => r.GetValue("RS_Partner Type", "").ToString())
                                 .ThenBy(r => r.GetValue("RS_Title","").ToString());
0
ответ дан 10 December 2019 в 02:49
поделиться
Другие вопросы по тегам:

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