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
Ну вообще-то хорошей практикой является перевод содержимого полей в SPFieldLookupValue. Тоже самое касается типа SPFieldUserValue.
ОтветитьУдалитьРаботать напрямую с item["Артикул"] (парсить его, сравнивать) порождает только геммор.
Сколько чудесного увидите, если запустите код и поле будет с множественным выбором. К тому же, есть различие в плотформах x64 и 32битных.
Это "нюанс" не SPFieldLookupValue, а демонстрация непонимания оператора "==" применительно к объектам. Мда...
ОтветитьУдалитьShurikEv, я не понял, что такое "перевод содержимого полей в SPFieldLookupValue". Не могли бы вы показать пример.
ОтветитьУдалитьDkmS, ваша формулировка более верна)