У меня есть SPView
объект, который содержит много SPListItem
объектов (в представлении много полей).
Меня интересует только одно из этих полей.Давайте назовем это specialField
Учитывая это представление и specialField, я хочу знать, содержится ли значение в specialField.
Вот способ сделать то, что я хочу сделать:
String specialField = "Special Field";
String specialValue = "value";
SPList list = SPContext.Current.Site.RootWeb.Lists["My List"];
SPView view = list.Views["My View"]; //This is the view I want to query
SPQuery query = new SPQuery();
query.Query = view.Query;
SPListItemCollection items = list.GetItems(query);
foreach(SPListItem item in items)
{
var value = item[specialField];
if(value != null) && (value.ToString() == specialValue)
{
//My value is found. This is what I was looking for.
//break out of the loop or return
}
}
//My value is not found.
Однако итерации по каждому элементу ListItem вряд ли кажутся оптимальными, тем более что их может быть несколько сотен.Этот запрос будет выполняться часто, поэтому я ищу эффективный способ сделать это.
EDIT Я не всегда буду работать с одним и тем же представлением, поэтому мое решение не может быть жестко закодировано (он должен быть достаточно универсальным, чтобы можно было изменить список, представление и specialField.
Было бы лучше привести его к объекту IEnumerable? Скажите что-то вроде этого:быть более эффективным или я полностью иду в неправильном направлении?