среда, 15 декабря 2010 г.

Нюанс SPFieldLookupValue

SPListItem item = SomeSPList.Items[0];
 
var tmp1 = SomeSPList.Items.Where(x => x["Артикул"] == item["Артикул"]);//Вернет только item
 
var tmp2 = SomeSPList.Items.Where(x => new ​SPFieldLookupValue(x["Артикул"].ToString()).LookupId == new SPFieldLookupValue(item["Артикул"].ToString()).LookupId);//Вернет все элементы с таким же lookupid

3 комментария:

  1. Ну вообще-то хорошей практикой является перевод содержимого полей в SPFieldLookupValue. Тоже самое касается типа SPFieldUserValue.
    Работать напрямую с item["Артикул"] (парсить его, сравнивать) порождает только геммор.
    Сколько чудесного увидите, если запустите код и поле будет с множественным выбором. К тому же, есть различие в плотформах x64 и 32битных.

    ОтветитьУдалить
  2. Это "нюанс" не SPFieldLookupValue, а демонстрация непонимания оператора "==" применительно к объектам. Мда...

    ОтветитьУдалить
  3. ShurikEv, я не понял, что такое "перевод содержимого полей в SPFieldLookupValue". Не могли бы вы показать пример.
    DkmS, ваша формулировка более верна)

    ОтветитьУдалить